6
6
import structlog
7
7
from fastapi import APIRouter , Depends , FastAPI
8
8
from fastapi .responses import StreamingResponse
9
- from codegate import __version__
10
9
10
+ from codegate import __version__
11
+ from codegate .api .v1 import v1
11
12
from codegate .dashboard .post_processing import (
12
13
parse_get_alert_conversation ,
13
14
parse_messages_in_conversations ,
20
21
dashboard_router = APIRouter (tags = ["Dashboard" ])
21
22
db_reader = None
22
23
24
+
23
25
def get_db_reader ():
24
26
global db_reader
25
27
if db_reader is None :
26
28
db_reader = DbReader ()
27
29
return db_reader
28
30
31
+
29
32
def fetch_latest_version () -> str :
30
33
url = "https://api.github.com/repos/stacklok/codegate/releases/latest"
31
- headers = {
32
- "Accept" : "application/vnd.github+json" ,
33
- "X-GitHub-Api-Version" : "2022-11-28"
34
- }
34
+ headers = {"Accept" : "application/vnd.github+json" , "X-GitHub-Api-Version" : "2022-11-28" }
35
35
response = requests .get (url , headers = headers , timeout = 5 )
36
36
response .raise_for_status ()
37
37
data = response .json ()
38
38
return data .get ("tag_name" , "unknown" )
39
39
40
+
40
41
@dashboard_router .get ("/dashboard/messages" )
41
42
def get_messages (db_reader : DbReader = Depends (get_db_reader )) -> List [Conversation ]:
42
43
"""
@@ -72,17 +73,18 @@ async def stream_sse():
72
73
"""
73
74
return StreamingResponse (generate_sse_events (), media_type = "text/event-stream" )
74
75
76
+
75
77
@dashboard_router .get ("/dashboard/version" )
76
78
def version_check ():
77
79
try :
78
80
latest_version = fetch_latest_version ()
79
81
80
82
# normalize the versions as github will return them with a 'v' prefix
81
- current_version = __version__ .lstrip ('v' )
82
- latest_version_stripped = latest_version .lstrip ('v' )
83
+ current_version = __version__ .lstrip ("v" )
84
+ latest_version_stripped = latest_version .lstrip ("v" )
83
85
84
86
is_latest : bool = latest_version_stripped == current_version
85
-
87
+
86
88
return {
87
89
"current_version" : current_version ,
88
90
"latest_version" : latest_version_stripped ,
@@ -95,15 +97,15 @@ def version_check():
95
97
"current_version" : __version__ ,
96
98
"latest_version" : "unknown" ,
97
99
"is_latest" : None ,
98
- "error" : "An error occurred while fetching the latest version"
100
+ "error" : "An error occurred while fetching the latest version" ,
99
101
}
100
102
except Exception as e :
101
103
logger .error (f"Unexpected error: { str (e )} " )
102
104
return {
103
105
"current_version" : __version__ ,
104
106
"latest_version" : "unknown" ,
105
107
"is_latest" : None ,
106
- "error" : "An unexpected error occurred"
108
+ "error" : "An unexpected error occurred" ,
107
109
}
108
110
109
111
@@ -113,6 +115,7 @@ def generate_openapi():
113
115
114
116
# Include your defined router
115
117
app .include_router (dashboard_router )
118
+ app .include_router (v1 , prefix = "/api/v1" , tags = ["CodeGate API" ])
116
119
117
120
# Generate OpenAPI JSON
118
121
openapi_schema = app .openapi ()
0 commit comments