2
2
3
3
from fastapi import APIRouter , HTTPException , Request , status
4
4
from fastapi .responses import FileResponse , JSONResponse
5
+ from prometheus_client import Counter
5
6
6
7
from gitingest .config import TMP_BASE_PATH
7
8
from server .models import IngestRequest
8
9
from server .routers_utils import COMMON_INGEST_RESPONSES , _perform_ingestion
9
10
from server .server_config import MAX_DISPLAY_SIZE
10
11
from server .server_utils import limiter
11
12
13
+ ingest_counter = Counter ("gitingest_ingest_total" , "Number of ingests" , ["status" , "url" ])
14
+
12
15
router = APIRouter ()
13
16
14
17
@@ -33,13 +36,16 @@ async def api_ingest(
33
36
- **JSONResponse**: Success response with ingestion results or error response with appropriate HTTP status code
34
37
35
38
"""
36
- return await _perform_ingestion (
39
+ response = await _perform_ingestion (
37
40
input_text = ingest_request .input_text ,
38
41
max_file_size = ingest_request .max_file_size ,
39
42
pattern_type = ingest_request .pattern_type ,
40
43
pattern = ingest_request .pattern ,
41
44
token = ingest_request .token ,
42
45
)
46
+ # limit URL to 255 characters
47
+ ingest_counter .labels (status = response .status_code , url = ingest_request .input_text [:255 ]).inc ()
48
+ return response
43
49
44
50
45
51
@router .get ("/api/{user}/{repository}" , responses = COMMON_INGEST_RESPONSES )
@@ -72,13 +78,16 @@ async def api_ingest_get(
72
78
**Returns**
73
79
- **JSONResponse**: Success response with ingestion results or error response with appropriate HTTP status code
74
80
"""
75
- return await _perform_ingestion (
81
+ response = await _perform_ingestion (
76
82
input_text = f"{ user } /{ repository } " ,
77
83
max_file_size = max_file_size ,
78
84
pattern_type = pattern_type ,
79
85
pattern = pattern ,
80
86
token = token or None ,
81
87
)
88
+ # limit URL to 255 characters
89
+ ingest_counter .labels (status = response .status_code , url = f"{ user } /{ repository } " [:255 ]).inc ()
90
+ return response
82
91
83
92
84
93
@router .get ("/api/download/file/{ingest_id}" , response_class = FileResponse )
0 commit comments