diff --git a/src/atproto/__init__.py b/src/atproto/__init__.py index 77ffb26..85fa2ba 100644 --- a/src/atproto/__init__.py +++ b/src/atproto/__init__.py @@ -6,7 +6,8 @@ from aiodns import DNSResolver from aiodns import error as dns_error from aiohttp.client import ClientResponse, ClientSession -from ..security import is_safe_url +from src.security import is_safe_url + from .kv import KV, nokv from .validator import is_valid_authserver_meta diff --git a/src/atproto/oauth.py b/src/atproto/oauth.py index 75540c0..566a1f0 100644 --- a/src/atproto/oauth.py +++ b/src/atproto/oauth.py @@ -1,14 +1,16 @@ -from typing import Any, Callable, NamedTuple -import time import json -from aiohttp.client import ClientSession, ClientResponse -from authlib.jose import JsonWebKey, Key, jwt +import time +from typing import Any, Callable, NamedTuple + +from aiohttp.client import ClientResponse, ClientSession from authlib.common.security import generate_token +from authlib.jose import JsonWebKey, Key, jwt from authlib.oauth2.rfc7636 import create_s256_code_challenge +from src.security import hardened_http, is_safe_url + from . import fetch_authserver_meta from .types import OAuthAuthRequest, OAuthSession -from ..security import is_safe_url, hardened_http class OAuthTokens(NamedTuple): diff --git a/src/auth.py b/src/auth.py index ebf0413..ddb4bf6 100644 --- a/src/auth.py +++ b/src/auth.py @@ -1,8 +1,9 @@ +from typing import NamedTuple, TypeVar + from flask import current_app from flask.sessions import SessionMixin -from typing import NamedTuple, TypeVar -from .atproto.types import OAuthAuthRequest, OAuthSession +from src.atproto.types import OAuthAuthRequest, OAuthSession def save_auth_request(session: SessionMixin, request: OAuthAuthRequest): diff --git a/src/db.py b/src/db.py index cdade1e..e442a10 100644 --- a/src/db.py +++ b/src/db.py @@ -1,11 +1,11 @@ -from flask import Flask, g +import sqlite3 from logging import Logger +from sqlite3 import Connection from typing import override -import sqlite3 -from sqlite3 import Connection +from flask import Flask, g -from .atproto.kv import KV as BaseKV +from src.atproto.kv import KV as BaseKV class KV(BaseKV): diff --git a/src/main.py b/src/main.py index 0e76e11..1950020 100644 --- a/src/main.py +++ b/src/main.py @@ -7,18 +7,18 @@ from flask import Flask, g, redirect, render_template, request, session, url_for from flask_htmx import HTMX from flask_htmx import make_response as htmx_response -from .atproto import ( +from src.atproto import ( PdsUrl, get_record, is_valid_did, resolve_did_from_handle, resolve_pds_from_did, ) -from .atproto.oauth import pds_authed_req -from .atproto.types import OAuthSession -from .auth import get_auth_session, save_auth_session -from .db import KV, close_db_connection, get_db, init_db -from .oauth import oauth +from src.atproto.oauth import pds_authed_req +from src.atproto.types import OAuthSession +from src.auth import get_auth_session, save_auth_session +from src.db import KV, close_db_connection, get_db, init_db +from src.oauth import oauth app = Flask(__name__) _ = app.config.from_prefixed_env() diff --git a/src/oauth.py b/src/oauth.py index efd5d29..727cb61 100644 --- a/src/oauth.py +++ b/src/oauth.py @@ -5,7 +5,7 @@ from aiohttp.client import ClientSession from authlib.jose import JsonWebKey, Key from flask import Blueprint, current_app, jsonify, redirect, request, session, url_for -from .atproto import ( +from src.atproto import ( fetch_authserver_meta, is_valid_did, is_valid_handle, @@ -13,16 +13,16 @@ from .atproto import ( resolve_authserver_from_pds, resolve_identity, ) -from .atproto.oauth import initial_token_request, send_par_auth_request -from .atproto.types import OAuthAuthRequest, OAuthSession -from .auth import ( +from src.atproto.oauth import initial_token_request, send_par_auth_request +from src.atproto.types import OAuthAuthRequest, OAuthSession +from src.auth import ( delete_auth_request, get_auth_request, save_auth_request, save_auth_session, ) -from .db import KV, get_db -from .security import is_safe_url +from src.db import KV, get_db +from src.security import is_safe_url oauth = Blueprint("oauth", __name__, url_prefix="/oauth")