forked from forks/microblog.pub
Cleanup, more typing for queries
This commit is contained in:
parent
d4590996e0
commit
5b9a0cb286
5 changed files with 43 additions and 28 deletions
39
app.py
39
app.py
|
@ -24,7 +24,6 @@ from little_boxes.activitypub import clean_activity
|
|||
from little_boxes.activitypub import get_backend
|
||||
from little_boxes.errors import ActivityGoneError
|
||||
from little_boxes.errors import Error
|
||||
from little_boxes.httpsig import HTTPSigAuth
|
||||
from little_boxes.httpsig import verify_request
|
||||
from little_boxes.webfinger import get_actor_url
|
||||
from little_boxes.webfinger import get_remote_follow_template
|
||||
|
@ -38,18 +37,19 @@ import config
|
|||
from core.meta import Box
|
||||
from core.activitypub import embed_collection
|
||||
from blueprints.api import _api_required
|
||||
from config import ADMIN_API_KEY
|
||||
from config import BLACKLIST
|
||||
from config import DB
|
||||
from config import HEADERS
|
||||
from config import ID
|
||||
from config import KEY
|
||||
from config import ME
|
||||
from config import MEDIA_CACHE
|
||||
from config import VERSION
|
||||
from core import activitypub
|
||||
from core.db import find_one_activity
|
||||
from core.meta import MetaKey
|
||||
from core.meta import _meta
|
||||
from core.meta import is_public
|
||||
from core.meta import by_remote_id
|
||||
from core.meta import in_outbox
|
||||
from core.shared import MY_PERSON
|
||||
from core.shared import _add_answers_to_question
|
||||
from core.shared import _build_thread
|
||||
|
@ -61,11 +61,11 @@ from core.shared import noindex
|
|||
from core.shared import paginated_query
|
||||
from core.shared import post_to_outbox
|
||||
from core.tasks import Tasks
|
||||
from blueprints.tasks import TaskError
|
||||
from utils import now
|
||||
from utils.key import get_secret_key
|
||||
from utils.template_filters import filters
|
||||
|
||||
# p = PousseTaches("http://localhost:7991", "http://localhost:5000")
|
||||
|
||||
app = Flask(__name__)
|
||||
app.secret_key = get_secret_key("flask")
|
||||
|
@ -91,12 +91,10 @@ else:
|
|||
root_logger.handlers = gunicorn_logger.handlers
|
||||
root_logger.setLevel(gunicorn_logger.level)
|
||||
|
||||
SIG_AUTH = HTTPSigAuth(KEY)
|
||||
|
||||
|
||||
def is_blacklisted(url: str) -> bool:
|
||||
try:
|
||||
return urlparse(url).netloc in BLACKLIST
|
||||
return urlparse(url).netloc in config.BLACKLIST
|
||||
except Exception:
|
||||
logger.exception(f"failed to blacklist for {url}")
|
||||
return False
|
||||
|
@ -209,13 +207,6 @@ def handle_activitypub_error(error):
|
|||
return response
|
||||
|
||||
|
||||
class TaskError(Exception):
|
||||
"""Raised to log the error for poussetaches."""
|
||||
|
||||
def __init__(self):
|
||||
self.message = traceback.format_exc()
|
||||
|
||||
|
||||
@app.errorhandler(TaskError)
|
||||
def handle_task_error(error):
|
||||
logger.error(
|
||||
|
@ -575,13 +566,11 @@ def outbox_detail(item_id):
|
|||
|
||||
@app.route("/outbox/<item_id>/activity")
|
||||
def outbox_activity(item_id):
|
||||
data = DB.activities.find_one(
|
||||
{
|
||||
"box": Box.OUTBOX.value,
|
||||
"remote_id": back.activity_url(item_id),
|
||||
"meta.public": True,
|
||||
}
|
||||
)
|
||||
data = find_one_activity({
|
||||
**in_outbox(),
|
||||
**by_remote_id(back.activity_url(item_id)),
|
||||
**is_public(),
|
||||
})
|
||||
if not data:
|
||||
abort(404)
|
||||
|
||||
|
@ -711,12 +700,6 @@ def outbox_activity_shares(item_id):
|
|||
)
|
||||
|
||||
|
||||
@app.route("/api/key")
|
||||
@login_required
|
||||
def api_user_key():
|
||||
return flask_jsonify(api_key=ADMIN_API_KEY)
|
||||
|
||||
|
||||
@app.route("/inbox", methods=["GET", "POST"]) # noqa: C901
|
||||
def inbox():
|
||||
# GET /inbox
|
||||
|
|
|
@ -31,6 +31,7 @@ from config import DEBUG_MODE
|
|||
from config import ID
|
||||
from config import JWT
|
||||
from config import MEDIA_CACHE
|
||||
from config import ADMIN_API_KEY
|
||||
from config import _drop_db
|
||||
from core import activitypub
|
||||
from core.meta import MetaKey
|
||||
|
@ -40,6 +41,7 @@ from core.shared import _Response
|
|||
from core.shared import back
|
||||
from core.shared import csrf
|
||||
from core.shared import post_to_outbox
|
||||
from core.shared import login_required
|
||||
from core.tasks import Tasks
|
||||
from utils import now
|
||||
|
||||
|
@ -126,6 +128,12 @@ def _user_api_response(**kwargs) -> _Response:
|
|||
return resp
|
||||
|
||||
|
||||
@blueprint.route("/api/key")
|
||||
@login_required
|
||||
def api_user_key() -> _Response:
|
||||
return flask.jsonify(api_key=ADMIN_API_KEY)
|
||||
|
||||
|
||||
@blueprint.route("/note/delete", methods=["POST"])
|
||||
@api_required
|
||||
def api_delete() -> _Response:
|
||||
|
|
0
core/__init__.py
Normal file
0
core/__init__.py
Normal file
19
core/db.py
Normal file
19
core/db.py
Normal file
|
@ -0,0 +1,19 @@
|
|||
from enum import Enum
|
||||
from enum import unique
|
||||
from typing import Dict
|
||||
from typing import Any
|
||||
from typing import Optional
|
||||
|
||||
from config import DB
|
||||
|
||||
_Q = Dict[str, Any]
|
||||
_Doc = Optional[Dict[str, Any]]
|
||||
|
||||
|
||||
@unique
|
||||
class CollectionName(Enum):
|
||||
ACTIVITIES = "activities"
|
||||
|
||||
|
||||
def find_one_activity(q: _Q) -> _Doc:
|
||||
return DB[CollectionName.ACTIVITIES.value].find_one(q)
|
|
@ -28,6 +28,7 @@ class MetaKey(Enum):
|
|||
GC_KEEP = "gc_keep"
|
||||
OBJECT = "object"
|
||||
OBJECT_ACTOR = "object_actor"
|
||||
PUBLIC = "public"
|
||||
|
||||
|
||||
def _meta(mk: MetaKey) -> str:
|
||||
|
@ -56,3 +57,7 @@ def not_undo() -> _SubQuery:
|
|||
|
||||
def by_actor(actor: ap.BaseActivity) -> _SubQuery:
|
||||
return {_meta(MetaKey.ACTOR_ID): actor.id}
|
||||
|
||||
|
||||
def is_public() -> _SubQuery:
|
||||
return {_meta(MetaKey.PUBLIC): True}
|
||||
|
|
Loading…
Reference in a new issue