diff --git a/app.py b/app.py index cbc6d8b..4e5ad0d 100644 --- a/app.py +++ b/app.py @@ -4,13 +4,13 @@ from sqlalchemy import MetaData, event from sqlalchemy.engine import Engine from flask_migrate import Migrate import version -from lib.cachebust import cachebust +from libforget.cachebust import cachebust from flask_limiter import Limiter -from lib.auth import get_viewer +from libforget.auth import get_viewer import os import mimetypes -import lib.brotli -import lib.img_proxy +import libforget.brotli +import libforget.img_proxy app = Flask(__name__) @@ -113,6 +113,7 @@ def install_security_headers(resp): mimetypes.add_type('image/webp', '.webp') -lib.brotli.brotli(app) +libforget.brotli.brotli(app) -imgproxy = lib.img_proxy.ImgProxyCache(redis_uri=app.config.get('REDIS_URI')) +imgproxy = ( + libforget.img_proxy.ImgProxyCache(redis_uri=app.config.get('REDIS_URI'))) diff --git a/lib/__init__.py b/libforget/__init__.py similarity index 100% rename from lib/__init__.py rename to libforget/__init__.py diff --git a/lib/auth.py b/libforget/auth.py similarity index 100% rename from lib/auth.py rename to libforget/auth.py diff --git a/lib/brotli.py b/libforget/brotli.py similarity index 100% rename from lib/brotli.py rename to libforget/brotli.py diff --git a/lib/cachebust.py b/libforget/cachebust.py similarity index 100% rename from lib/cachebust.py rename to libforget/cachebust.py diff --git a/lib/exceptions.py b/libforget/exceptions.py similarity index 100% rename from lib/exceptions.py rename to libforget/exceptions.py diff --git a/lib/img_proxy.py b/libforget/img_proxy.py similarity index 100% rename from lib/img_proxy.py rename to libforget/img_proxy.py diff --git a/lib/interval.py b/libforget/interval.py similarity index 100% rename from lib/interval.py rename to libforget/interval.py diff --git a/lib/json.py b/libforget/json.py similarity index 100% rename from lib/json.py rename to libforget/json.py diff --git a/lib/mastodon.py b/libforget/mastodon.py similarity index 99% rename from lib/mastodon.py rename to libforget/mastodon.py index 1f2baa4..cfce59b 100644 --- a/lib/mastodon.py +++ b/libforget/mastodon.py @@ -6,7 +6,7 @@ from requests import head from app import db, sentry from math import inf import iso8601 -from lib.exceptions import TemporaryError +from libforget.exceptions import TemporaryError def get_or_create_app(instance_url, callback, website): diff --git a/lib/settings.py b/libforget/settings.py similarity index 100% rename from lib/settings.py rename to libforget/settings.py diff --git a/lib/timescales.py b/libforget/timescales.py similarity index 100% rename from lib/timescales.py rename to libforget/timescales.py diff --git a/lib/twitter.py b/libforget/twitter.py similarity index 99% rename from lib/twitter.py rename to libforget/twitter.py index bc41076..619c57a 100644 --- a/lib/twitter.py +++ b/libforget/twitter.py @@ -7,7 +7,7 @@ from datetime import datetime import locale from zipfile import ZipFile from io import BytesIO -from lib.exceptions import PermanentError, TemporaryError +from libforget.exceptions import PermanentError, TemporaryError from urllib.error import URLError diff --git a/lib/version.py b/libforget/version.py similarity index 100% rename from lib/version.py rename to libforget/version.py diff --git a/model.py b/model.py index 20dcb41..4618119 100644 --- a/model.py +++ b/model.py @@ -2,7 +2,7 @@ from datetime import timedelta, datetime, timezone from app import db import secrets -from lib.interval import decompose_interval +from libforget.interval import decompose_interval class TimestampMixin(object): diff --git a/routes/__init__.py b/routes/__init__.py index bafe89b..3b22c0a 100644 --- a/routes/__init__.py +++ b/routes/__init__.py @@ -1,9 +1,9 @@ from flask import render_template, url_for, redirect, request, g,\ make_response from datetime import datetime, timedelta, timezone -import lib.twitter -import lib.mastodon -from lib.auth import require_auth, csrf,\ +import libforget.twitter +import libforget.mastodon +from libforget.auth import require_auth, csrf,\ get_viewer from model import Session, TwitterArchive, MastodonApp, MastodonInstance from app import app, db, sentry, limiter, imgproxy @@ -11,9 +11,9 @@ import tasks from zipfile import BadZipFile from twitter import TwitterError from urllib.error import URLError -import lib.version -import lib.settings -import lib.json +import libforget.version +import libforget.settings +import libforget.json import re @@ -23,10 +23,10 @@ def index(): if viewer: return render_template( 'logged_in.html', - scales=lib.interval.SCALES, + scales=libforget.interval.SCALES, tweet_archive_failed='tweet_archive_failed' in request.args, settings_error='settings_error' in request.args, - viewer_json=lib.json.account(viewer), + viewer_json=libforget.json.account(viewer), ) else: return redirect(url_for('about')) @@ -50,7 +50,7 @@ def about(): @limiter.limit('10/minute') def twitter_login_step1(): try: - return redirect(lib.twitter.get_login_url( + return redirect(libforget.twitter.get_login_url( callback=url_for('twitter_login_step2', _external=True), **app.config.get_namespace("TWITTER_") )) @@ -80,7 +80,7 @@ def twitter_login_step2(): try: oauth_token = request.args['oauth_token'] oauth_verifier = request.args['oauth_verifier'] - token = lib.twitter.receive_verifier( + token = libforget.twitter.receive_verifier( oauth_token, oauth_verifier, **app.config.get_namespace("TWITTER_")) @@ -110,7 +110,7 @@ def upload_tweet_archive(): db.session.commit() try: - files = lib.twitter.chunk_twitter_archive(ta.id) + files = libforget.twitter.chunk_twitter_archive(ta.id) ta.chunks = len(files) db.session.commit() @@ -136,7 +136,7 @@ def upload_tweet_archive(): def settings(): viewer = get_viewer() try: - for attr in lib.settings.attrs: + for attr in libforget.settings.attrs: if attr in request.form: setattr(viewer, attr, request.form[attr]) db.session.commit() @@ -235,7 +235,7 @@ def mastodon_login_step1(instance=None): instance_url=instance_url, _external=True) try: - app = lib.mastodon.get_or_create_app( + app = libforget.mastodon.get_or_create_app( instance_url, callback, url_for('index', _external=True)) @@ -243,7 +243,7 @@ def mastodon_login_step1(instance=None): db.session.commit() - return redirect(lib.mastodon.login_url(app, callback)) + return redirect(libforget.mastodon.login_url(app, callback)) except Exception: if sentry: @@ -261,7 +261,7 @@ def mastodon_login_step2(instance_url): callback = url_for('mastodon_login_step2', instance_url=instance_url, _external=True) - token = lib.mastodon.receive_code(code, app, callback) + token = libforget.mastodon.receive_code(code, app, callback) account = token.account session = login(account.id) diff --git a/routes/api.py b/routes/api.py index aa3221e..1d86bcc 100644 --- a/routes/api.py +++ b/routes/api.py @@ -1,9 +1,9 @@ from app import app, db -from lib.auth import require_auth_api, get_viewer +from libforget.auth import require_auth_api, get_viewer from flask import jsonify, redirect, make_response, request from model import Account -import lib.settings -import lib.json +import libforget.settings +import libforget.json @app.route('/api/settings', methods=('PUT',)) @@ -12,7 +12,7 @@ def api_settings_put(): viewer = get_viewer() data = request.json updated = dict() - for key in lib.settings.attrs: + for key in libforget.settings.attrs: if key in data: setattr(viewer, key, data[key]) updated[key] = data[key] @@ -24,7 +24,7 @@ def api_settings_put(): @require_auth_api def api_viewer(): viewer = get_viewer() - resp = make_response(lib.json.account(viewer)) + resp = make_response(libforget.json.account(viewer)) resp.headers.set('content-type', 'application/json') return resp diff --git a/routes/misc.py b/routes/misc.py index f4c9d06..3480203 100644 --- a/routes/misc.py +++ b/routes/misc.py @@ -1,8 +1,8 @@ from app import app, db, sentry from flask import g, render_template, make_response, redirect import version -import lib.version -from lib.auth import get_viewer_session, set_session_cookie +import libforget.version +from libforget.auth import get_viewer_session, set_session_cookie @app.before_request @@ -20,7 +20,7 @@ def load_viewer(): def inject_version(): return dict( version=version.version, - repo_url=lib.version.url_for_version(version.version), + repo_url=libforget.version.url_for_version(version.version), ) diff --git a/tasks.py b/tasks.py index e200692..a68954f 100644 --- a/tasks.py +++ b/tasks.py @@ -3,8 +3,8 @@ from app import app as flaskapp from app import db from model import Session, Account, TwitterArchive, Post, OAuthToken,\ MastodonInstance -import lib.twitter -import lib.mastodon +import libforget.twitter +import libforget.mastodon from datetime import timedelta, datetime, timezone from zipfile import ZipFile from io import BytesIO, TextIOWrapper @@ -12,7 +12,7 @@ import json from kombu import Queue import random import version -from lib.exceptions import PermanentError, TemporaryError +from libforget.exceptions import PermanentError, TemporaryError import redis from functools import wraps import pickle @@ -92,9 +92,9 @@ def fetch_acc(id_, cursor=None): try: action = noop if(acc.service == 'twitter'): - action = lib.twitter.fetch_acc + action = libforget.twitter.fetch_acc elif(acc.service == 'mastodon'): - action = lib.mastodon.fetch_acc + action = libforget.mastodon.fetch_acc cursor = action(acc, cursor) if cursor: fetch_acc.si(id_, cursor).apply_async() @@ -124,7 +124,7 @@ def import_twitter_archive_month(archive_id, month_path): tweets = json.load(f) for tweet in tweets: - post = lib.twitter.post_from_api_tweet_object(tweet) + post = libforget.twitter.post_from_api_tweet_object(tweet) existing_post = db.session.query(Post).get(post.id) if post.author_id != ta.account_id or\ @@ -166,7 +166,7 @@ def delete_from_account(account_id): action = noop if account.service == 'twitter': - action = lib.twitter.delete + action = libforget.twitter.delete posts = refresh_posts(posts) if posts: eligible = list(( # nosec @@ -177,7 +177,7 @@ def delete_from_account(account_id): if eligible: to_delete = random.choice(eligible) elif account.service == 'mastodon': - action = lib.mastodon.delete + action = libforget.mastodon.delete for post in posts: refreshed = refresh_posts((post,)) if refreshed and \ @@ -203,9 +203,9 @@ def refresh_posts(posts): return [] if posts[0].service == 'twitter': - return lib.twitter.refresh_posts(posts) + return libforget.twitter.refresh_posts(posts) elif posts[0].service == 'mastodon': - return lib.mastodon.refresh_posts(posts) + return libforget.mastodon.refresh_posts(posts) @app.task() diff --git a/test/test_libbrotli.py b/test/test_libbrotli.py index a87308f..18e3367 100644 --- a/test/test_libbrotli.py +++ b/test/test_libbrotli.py @@ -1,5 +1,5 @@ import pytest -import lib.brotli +import libforget.brotli BEE_SCRIPT = bytes("According to all known laws of aviation,", 'UTF-8') @@ -22,7 +22,7 @@ def app(redisdb): @pytest.fixture def br_app(app): - lib.brotli.brotli(app, timeout=TIMEOUT_TARGET) + libforget.brotli.brotli(app, timeout=TIMEOUT_TARGET) return app @@ -92,7 +92,7 @@ def test_brotli_dynamic_cache(br_client): def test_brotli_dynamic_timeout(app): from secrets import token_urlsafe - lib.brotli.brotli(app, timeout=0.01) + libforget.brotli.brotli(app, timeout=0.01) @app.route('/hard_to_compress') def hard_to_compress(): @@ -111,7 +111,7 @@ def test_brotli_dynamic_timeout(app): def test_brotli_dynamic_expire(app): from time import sleep - lib.brotli.brotli(app, expire=0.1) + libforget.brotli.brotli(app, expire=0.1) client = app.test_client() client.get(