1
- from typing import Annotated , Callable , Generator
1
+ from typing import Annotated
2
2
from uuid import UUID
3
3
4
4
from fastapi import APIRouter , Depends , FastAPI , HTTPException , Path
7
7
8
8
import app .shared .db .models as models
9
9
import app .web .dtos as dtos
10
- from app .shared .settings import settings
11
- from app .web .security import authenticate_api_key
10
+ from app .web .injections .db import get_session
11
+ from app .web .injections .security import api_key_auth , sharing_auth
12
+ from app .web .injections .task_queue import get_task_queue
12
13
from app .web .task_queue import TaskQueue
13
14
15
+ DatabaseSession = Annotated [Session , Depends (get_session )]
14
16
15
- def app_factory (
16
- session_getter : Callable [[], Generator [Session , None , None ]]
17
- ) -> FastAPI :
18
- DatabaseSession = Annotated [Session , Depends (session_getter )]
19
-
20
- task_queue = TaskQueue ()
21
17
18
+ def app_factory ():
22
19
app = FastAPI (
23
20
description = (
24
21
"whisperbox-transcribe is an async HTTP wrapper for openai/whisper."
@@ -28,13 +25,13 @@ def app_factory(
28
25
29
26
api_router = APIRouter (prefix = "/api/v1" )
30
27
31
- @api_router .get ("/" , response_model = None , status_code = 204 )
32
- def api_root () -> None :
28
+ @api_router .get ("/" , status_code = 204 )
29
+ def api_root ():
33
30
return None
34
31
35
32
@api_router .get (
36
33
"/jobs" ,
37
- dependencies = [Depends (authenticate_api_key )],
34
+ dependencies = [Depends (api_key_auth )],
38
35
response_model = list [dtos .Job ],
39
36
summary = "Get metadata for all jobs" ,
40
37
)
@@ -52,7 +49,7 @@ def get_jobs(
52
49
53
50
@api_router .get (
54
51
"/jobs/{id}" ,
55
- dependencies = [] if settings . ENABLE_SHARING else [ Depends (authenticate_api_key )],
52
+ dependencies = [Depends (sharing_auth )],
56
53
response_model = dtos .Job ,
57
54
summary = "Get metadata for one job" ,
58
55
)
@@ -72,7 +69,7 @@ def get_job(
72
69
73
70
@api_router .get (
74
71
"/jobs/{id}/artifacts" ,
75
- dependencies = [] if settings . ENABLE_SHARING else [ Depends (authenticate_api_key )],
72
+ dependencies = [Depends (api_key_auth )],
76
73
response_model = list [dtos .Artifact ],
77
74
summary = "Get all artifacts for one job" ,
78
75
)
@@ -93,7 +90,7 @@ def get_artifacts_for_job(
93
90
94
91
@api_router .delete (
95
92
"/jobs/{id}" ,
96
- dependencies = [Depends (authenticate_api_key )],
93
+ dependencies = [Depends (sharing_auth )],
97
94
status_code = 204 ,
98
95
summary = "Delete a job with all artifacts" ,
99
96
)
@@ -130,14 +127,15 @@ class PostJobPayload(BaseModel):
130
127
131
128
@api_router .post (
132
129
"/jobs" ,
133
- dependencies = [Depends (authenticate_api_key )],
130
+ dependencies = [Depends (api_key_auth )],
134
131
response_model = dtos .Job ,
135
132
status_code = 201 ,
136
133
summary = "Enqueue a new job" ,
137
134
)
138
135
def create_job (
139
136
payload : PostJobPayload ,
140
137
session : DatabaseSession ,
138
+ task_queue : Annotated [TaskQueue , Depends (get_task_queue )],
141
139
) -> models .Job :
142
140
"""
143
141
Enqueue a new whisper job for processing.
0 commit comments