rename lib to libforget

This commit is contained in:
codl 2017-09-20 23:02:36 +02:00
parent 89e35786d0
commit c135dc793e
No known key found for this signature in database
GPG Key ID: 6CD7C8891ED1233A
20 changed files with 47 additions and 46 deletions

13
app.py
View File

@ -4,13 +4,13 @@ from sqlalchemy import MetaData, event
from sqlalchemy.engine import Engine from sqlalchemy.engine import Engine
from flask_migrate import Migrate from flask_migrate import Migrate
import version import version
from lib.cachebust import cachebust from libforget.cachebust import cachebust
from flask_limiter import Limiter from flask_limiter import Limiter
from lib.auth import get_viewer from libforget.auth import get_viewer
import os import os
import mimetypes import mimetypes
import lib.brotli import libforget.brotli
import lib.img_proxy import libforget.img_proxy
app = Flask(__name__) app = Flask(__name__)
@ -113,6 +113,7 @@ def install_security_headers(resp):
mimetypes.add_type('image/webp', '.webp') 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')))

View File

@ -6,7 +6,7 @@ from requests import head
from app import db, sentry from app import db, sentry
from math import inf from math import inf
import iso8601 import iso8601
from lib.exceptions import TemporaryError from libforget.exceptions import TemporaryError
def get_or_create_app(instance_url, callback, website): def get_or_create_app(instance_url, callback, website):

View File

@ -7,7 +7,7 @@ from datetime import datetime
import locale import locale
from zipfile import ZipFile from zipfile import ZipFile
from io import BytesIO from io import BytesIO
from lib.exceptions import PermanentError, TemporaryError from libforget.exceptions import PermanentError, TemporaryError
from urllib.error import URLError from urllib.error import URLError

View File

@ -2,7 +2,7 @@ from datetime import timedelta, datetime, timezone
from app import db from app import db
import secrets import secrets
from lib.interval import decompose_interval from libforget.interval import decompose_interval
class TimestampMixin(object): class TimestampMixin(object):

View File

@ -1,9 +1,9 @@
from flask import render_template, url_for, redirect, request, g,\ from flask import render_template, url_for, redirect, request, g,\
make_response make_response
from datetime import datetime, timedelta, timezone from datetime import datetime, timedelta, timezone
import lib.twitter import libforget.twitter
import lib.mastodon import libforget.mastodon
from lib.auth import require_auth, csrf,\ from libforget.auth import require_auth, csrf,\
get_viewer get_viewer
from model import Session, TwitterArchive, MastodonApp, MastodonInstance from model import Session, TwitterArchive, MastodonApp, MastodonInstance
from app import app, db, sentry, limiter, imgproxy from app import app, db, sentry, limiter, imgproxy
@ -11,9 +11,9 @@ import tasks
from zipfile import BadZipFile from zipfile import BadZipFile
from twitter import TwitterError from twitter import TwitterError
from urllib.error import URLError from urllib.error import URLError
import lib.version import libforget.version
import lib.settings import libforget.settings
import lib.json import libforget.json
import re import re
@ -23,10 +23,10 @@ def index():
if viewer: if viewer:
return render_template( return render_template(
'logged_in.html', 'logged_in.html',
scales=lib.interval.SCALES, scales=libforget.interval.SCALES,
tweet_archive_failed='tweet_archive_failed' in request.args, tweet_archive_failed='tweet_archive_failed' in request.args,
settings_error='settings_error' in request.args, settings_error='settings_error' in request.args,
viewer_json=lib.json.account(viewer), viewer_json=libforget.json.account(viewer),
) )
else: else:
return redirect(url_for('about')) return redirect(url_for('about'))
@ -50,7 +50,7 @@ def about():
@limiter.limit('10/minute') @limiter.limit('10/minute')
def twitter_login_step1(): def twitter_login_step1():
try: try:
return redirect(lib.twitter.get_login_url( return redirect(libforget.twitter.get_login_url(
callback=url_for('twitter_login_step2', _external=True), callback=url_for('twitter_login_step2', _external=True),
**app.config.get_namespace("TWITTER_") **app.config.get_namespace("TWITTER_")
)) ))
@ -80,7 +80,7 @@ def twitter_login_step2():
try: try:
oauth_token = request.args['oauth_token'] oauth_token = request.args['oauth_token']
oauth_verifier = request.args['oauth_verifier'] oauth_verifier = request.args['oauth_verifier']
token = lib.twitter.receive_verifier( token = libforget.twitter.receive_verifier(
oauth_token, oauth_verifier, oauth_token, oauth_verifier,
**app.config.get_namespace("TWITTER_")) **app.config.get_namespace("TWITTER_"))
@ -110,7 +110,7 @@ def upload_tweet_archive():
db.session.commit() db.session.commit()
try: try:
files = lib.twitter.chunk_twitter_archive(ta.id) files = libforget.twitter.chunk_twitter_archive(ta.id)
ta.chunks = len(files) ta.chunks = len(files)
db.session.commit() db.session.commit()
@ -136,7 +136,7 @@ def upload_tweet_archive():
def settings(): def settings():
viewer = get_viewer() viewer = get_viewer()
try: try:
for attr in lib.settings.attrs: for attr in libforget.settings.attrs:
if attr in request.form: if attr in request.form:
setattr(viewer, attr, request.form[attr]) setattr(viewer, attr, request.form[attr])
db.session.commit() db.session.commit()
@ -235,7 +235,7 @@ def mastodon_login_step1(instance=None):
instance_url=instance_url, _external=True) instance_url=instance_url, _external=True)
try: try:
app = lib.mastodon.get_or_create_app( app = libforget.mastodon.get_or_create_app(
instance_url, instance_url,
callback, callback,
url_for('index', _external=True)) url_for('index', _external=True))
@ -243,7 +243,7 @@ def mastodon_login_step1(instance=None):
db.session.commit() db.session.commit()
return redirect(lib.mastodon.login_url(app, callback)) return redirect(libforget.mastodon.login_url(app, callback))
except Exception: except Exception:
if sentry: if sentry:
@ -261,7 +261,7 @@ def mastodon_login_step2(instance_url):
callback = url_for('mastodon_login_step2', callback = url_for('mastodon_login_step2',
instance_url=instance_url, _external=True) 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 account = token.account
session = login(account.id) session = login(account.id)

View File

@ -1,9 +1,9 @@
from app import app, db 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 flask import jsonify, redirect, make_response, request
from model import Account from model import Account
import lib.settings import libforget.settings
import lib.json import libforget.json
@app.route('/api/settings', methods=('PUT',)) @app.route('/api/settings', methods=('PUT',))
@ -12,7 +12,7 @@ def api_settings_put():
viewer = get_viewer() viewer = get_viewer()
data = request.json data = request.json
updated = dict() updated = dict()
for key in lib.settings.attrs: for key in libforget.settings.attrs:
if key in data: if key in data:
setattr(viewer, key, data[key]) setattr(viewer, key, data[key])
updated[key] = data[key] updated[key] = data[key]
@ -24,7 +24,7 @@ def api_settings_put():
@require_auth_api @require_auth_api
def api_viewer(): def api_viewer():
viewer = get_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') resp.headers.set('content-type', 'application/json')
return resp return resp

View File

@ -1,8 +1,8 @@
from app import app, db, sentry from app import app, db, sentry
from flask import g, render_template, make_response, redirect from flask import g, render_template, make_response, redirect
import version import version
import lib.version import libforget.version
from lib.auth import get_viewer_session, set_session_cookie from libforget.auth import get_viewer_session, set_session_cookie
@app.before_request @app.before_request
@ -20,7 +20,7 @@ def load_viewer():
def inject_version(): def inject_version():
return dict( return dict(
version=version.version, version=version.version,
repo_url=lib.version.url_for_version(version.version), repo_url=libforget.version.url_for_version(version.version),
) )

View File

@ -3,8 +3,8 @@ from app import app as flaskapp
from app import db from app import db
from model import Session, Account, TwitterArchive, Post, OAuthToken,\ from model import Session, Account, TwitterArchive, Post, OAuthToken,\
MastodonInstance MastodonInstance
import lib.twitter import libforget.twitter
import lib.mastodon import libforget.mastodon
from datetime import timedelta, datetime, timezone from datetime import timedelta, datetime, timezone
from zipfile import ZipFile from zipfile import ZipFile
from io import BytesIO, TextIOWrapper from io import BytesIO, TextIOWrapper
@ -12,7 +12,7 @@ import json
from kombu import Queue from kombu import Queue
import random import random
import version import version
from lib.exceptions import PermanentError, TemporaryError from libforget.exceptions import PermanentError, TemporaryError
import redis import redis
from functools import wraps from functools import wraps
import pickle import pickle
@ -92,9 +92,9 @@ def fetch_acc(id_, cursor=None):
try: try:
action = noop action = noop
if(acc.service == 'twitter'): if(acc.service == 'twitter'):
action = lib.twitter.fetch_acc action = libforget.twitter.fetch_acc
elif(acc.service == 'mastodon'): elif(acc.service == 'mastodon'):
action = lib.mastodon.fetch_acc action = libforget.mastodon.fetch_acc
cursor = action(acc, cursor) cursor = action(acc, cursor)
if cursor: if cursor:
fetch_acc.si(id_, cursor).apply_async() fetch_acc.si(id_, cursor).apply_async()
@ -124,7 +124,7 @@ def import_twitter_archive_month(archive_id, month_path):
tweets = json.load(f) tweets = json.load(f)
for tweet in tweets: 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) existing_post = db.session.query(Post).get(post.id)
if post.author_id != ta.account_id or\ if post.author_id != ta.account_id or\
@ -166,7 +166,7 @@ def delete_from_account(account_id):
action = noop action = noop
if account.service == 'twitter': if account.service == 'twitter':
action = lib.twitter.delete action = libforget.twitter.delete
posts = refresh_posts(posts) posts = refresh_posts(posts)
if posts: if posts:
eligible = list(( # nosec eligible = list(( # nosec
@ -177,7 +177,7 @@ def delete_from_account(account_id):
if eligible: if eligible:
to_delete = random.choice(eligible) to_delete = random.choice(eligible)
elif account.service == 'mastodon': elif account.service == 'mastodon':
action = lib.mastodon.delete action = libforget.mastodon.delete
for post in posts: for post in posts:
refreshed = refresh_posts((post,)) refreshed = refresh_posts((post,))
if refreshed and \ if refreshed and \
@ -203,9 +203,9 @@ def refresh_posts(posts):
return [] return []
if posts[0].service == 'twitter': if posts[0].service == 'twitter':
return lib.twitter.refresh_posts(posts) return libforget.twitter.refresh_posts(posts)
elif posts[0].service == 'mastodon': elif posts[0].service == 'mastodon':
return lib.mastodon.refresh_posts(posts) return libforget.mastodon.refresh_posts(posts)
@app.task() @app.task()

View File

@ -1,5 +1,5 @@
import pytest import pytest
import lib.brotli import libforget.brotli
BEE_SCRIPT = bytes("According to all known laws of aviation,", 'UTF-8') BEE_SCRIPT = bytes("According to all known laws of aviation,", 'UTF-8')
@ -22,7 +22,7 @@ def app(redisdb):
@pytest.fixture @pytest.fixture
def br_app(app): def br_app(app):
lib.brotli.brotli(app, timeout=TIMEOUT_TARGET) libforget.brotli.brotli(app, timeout=TIMEOUT_TARGET)
return app return app
@ -92,7 +92,7 @@ def test_brotli_dynamic_cache(br_client):
def test_brotli_dynamic_timeout(app): def test_brotli_dynamic_timeout(app):
from secrets import token_urlsafe from secrets import token_urlsafe
lib.brotli.brotli(app, timeout=0.01) libforget.brotli.brotli(app, timeout=0.01)
@app.route('/hard_to_compress') @app.route('/hard_to_compress')
def hard_to_compress(): def hard_to_compress():
@ -111,7 +111,7 @@ def test_brotli_dynamic_timeout(app):
def test_brotli_dynamic_expire(app): def test_brotli_dynamic_expire(app):
from time import sleep from time import sleep
lib.brotli.brotli(app, expire=0.1) libforget.brotli.brotli(app, expire=0.1)
client = app.test_client() client = app.test_client()
client.get( client.get(