Files
mcma-backend/graphify-out/cache/ast/v0.9.12/3be93ddcf1d6cfd2b995b24124fbc30a8158e76ecb327849777b4b6f7d779d0d.json
T
Senko-san fb5ce3c708
Docker Build & Publish / build (push) Successful in 1m11s
Docker Build & Publish / push (push) Failing after 7s
Docker Build & Publish / Prune old image versions (push) Has been skipped
chore: graphify!
2026-07-11 16:21:34 +03:00

1 line
22 KiB
JSON

{"nodes": [{"id": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_py", "label": "subsonic_auth_service.py", "file_type": "code", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L1"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_md5_hex", "label": "_md5_hex()", "file_type": "code", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L25", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_decode_legacy_password", "label": "_decode_legacy_password()", "file_type": "code", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L29", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice", "label": "SubsonicAuthService", "file_type": "code", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L39", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_init", "label": ".__init__()", "file_type": "code", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L40", "_callable": true}, {"id": "userrepository", "label": "UserRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/application/subsonic_auth_service.py"}, {"id": "subsoniccipher", "label": "SubsonicCipher", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/application/subsonic_auth_service.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_authenticate", "label": ".authenticate()", "file_type": "code", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L44", "_callable": true}, {"id": "user", "label": "User", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/application/subsonic_auth_service.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_rotate", "label": ".rotate()", "file_type": "code", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L81", "_callable": true}, {"id": "uuid", "label": "UUID", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/application/subsonic_auth_service.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_reveal", "label": ".reveal()", "file_type": "code", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L88", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_require_user", "label": "._require_user()", "file_type": "code", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L96", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_rationale_1", "label": "SubsonicAuthService \u2014 app-password lifecycle + Subsonic auth verification. The", "file_type": "rationale", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L1"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_rationale_30", "label": "Decode a Subsonic ``p`` param: ``enc:<hex>`` (hex-encoded) or plaintext.", "file_type": "rationale", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L30"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_rationale_52", "label": "Resolve Subsonic query auth params to a domain :class:`User`. Raises :c", "file_type": "rationale", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L52"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_rationale_82", "label": "Generate a fresh app-password, store it encrypted, return the plaintext.", "file_type": "rationale", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L82"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_rationale_89", "label": "Return the current app-password, generating one on first access.", "file_type": "rationale", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L89"}], "edges": [{"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_py", "target": "hashlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L15", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_py", "target": "hmac", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L16", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_py", "target": "uuid", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L17", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_py", "target": "app_core_security", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L19", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_py", "target": "app_domain_entities", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L20", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_py", "target": "app_domain_errors", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L21", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_py", "target": "app_domain_ports", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L22", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_py", "target": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_md5_hex", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L25", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_py", "target": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_decode_legacy_password", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L29", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_py", "target": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L39", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice", "target": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L40", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_init", "target": "userrepository", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L40", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_init", "target": "subsoniccipher", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L40", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice", "target": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_authenticate", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L44", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_authenticate", "target": "user", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L44", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice", "target": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_rotate", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L81", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_rotate", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L81", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice", "target": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_reveal", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L88", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_reveal", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L88", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice", "target": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_require_user", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L96", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_require_user", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L96", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_require_user", "target": "user", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L96", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_authenticate", "target": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_md5_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L70", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_authenticate", "target": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_decode_legacy_password", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L75", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_rotate", "target": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_require_user", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L83", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_reveal", "target": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_require_user", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L90", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_reveal", "target": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_rotate", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L93", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_rationale_1", "target": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L1", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_rationale_30", "target": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_decode_legacy_password", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L30", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_rationale_52", "target": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_authenticate", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L52", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_rationale_82", "target": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_rotate", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L82", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_rationale_89", "target": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_reveal", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/application/subsonic_auth_service.py", "source_location": "L89", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_md5_hex", "callee": "hexdigest", "is_member_call": true, "source_file": "app/application/subsonic_auth_service.py", "source_location": "L26", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_md5_hex", "callee": "md5", "is_member_call": true, "source_file": "app/application/subsonic_auth_service.py", "source_location": "L26", "receiver": "hashlib"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_md5_hex", "callee": "encode", "is_member_call": true, "source_file": "app/application/subsonic_auth_service.py", "source_location": "L26", "receiver": "value"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_decode_legacy_password", "callee": "startswith", "is_member_call": true, "source_file": "app/application/subsonic_auth_service.py", "source_location": "L31", "receiver": "p"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_decode_legacy_password", "callee": "decode", "is_member_call": true, "source_file": "app/application/subsonic_auth_service.py", "source_location": "L33", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_decode_legacy_password", "callee": "fromhex", "is_member_call": true, "source_file": "app/application/subsonic_auth_service.py", "source_location": "L33", "receiver": "bytes"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_decode_legacy_password", "callee": "AuthenticationError", "is_member_call": false, "source_file": "app/application/subsonic_auth_service.py", "source_location": "L35", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_authenticate", "callee": "ValidationError", "is_member_call": false, "source_file": "app/application/subsonic_auth_service.py", "source_location": "L59", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_authenticate", "callee": "ValidationError", "is_member_call": false, "source_file": "app/application/subsonic_auth_service.py", "source_location": "L61", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_authenticate", "callee": "get_subsonic_credentials_by_username", "is_member_call": true, "source_file": "app/application/subsonic_auth_service.py", "source_location": "L63", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_authenticate", "callee": "AuthenticationError", "is_member_call": false, "source_file": "app/application/subsonic_auth_service.py", "source_location": "L65", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_authenticate", "callee": "decrypt", "is_member_call": true, "source_file": "app/application/subsonic_auth_service.py", "source_location": "L67", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_authenticate", "callee": "compare_digest", "is_member_call": true, "source_file": "app/application/subsonic_auth_service.py", "source_location": "L71", "receiver": "hmac"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_authenticate", "callee": "lower", "is_member_call": true, "source_file": "app/application/subsonic_auth_service.py", "source_location": "L71", "receiver": "token"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_authenticate", "callee": "AuthenticationError", "is_member_call": false, "source_file": "app/application/subsonic_auth_service.py", "source_location": "L72", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_authenticate", "callee": "compare_digest", "is_member_call": true, "source_file": "app/application/subsonic_auth_service.py", "source_location": "L76", "receiver": "hmac"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_authenticate", "callee": "AuthenticationError", "is_member_call": false, "source_file": "app/application/subsonic_auth_service.py", "source_location": "L77", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_rotate", "callee": "generate_subsonic_password", "is_member_call": false, "source_file": "app/application/subsonic_auth_service.py", "source_location": "L84", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_rotate", "callee": "set_subsonic_password_enc", "is_member_call": true, "source_file": "app/application/subsonic_auth_service.py", "source_location": "L85", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_rotate", "callee": "encrypt", "is_member_call": true, "source_file": "app/application/subsonic_auth_service.py", "source_location": "L85", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_reveal", "callee": "get_subsonic_password_enc", "is_member_call": true, "source_file": "app/application/subsonic_auth_service.py", "source_location": "L91", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_reveal", "callee": "decrypt", "is_member_call": true, "source_file": "app/application/subsonic_auth_service.py", "source_location": "L94", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_require_user", "callee": "get_by_id", "is_member_call": true, "source_file": "app/application/subsonic_auth_service.py", "source_location": "L97", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_app_application_subsonic_auth_service_subsonicauthservice_require_user", "callee": "NotFoundError", "is_member_call": false, "source_file": "app/application/subsonic_auth_service.py", "source_location": "L99", "receiver": null}]}