@@ -5,7 +5,10 @@ use crate::{
55 db:: DatabaseExt ,
66 endpoints:: Deprecation ,
77 vulnerability:: {
8- model:: { AnalysisRequest , AnalysisResponse , VulnerabilityDetails , VulnerabilitySummary } ,
8+ model:: {
9+ AnalysisRequest , AnalysisResponse , VulnerabilityDetails , VulnerabilitySummary ,
10+ v2:: AnalysisResponseV2 ,
11+ } ,
912 service:: VulnerabilityService ,
1013 } ,
1114} ;
@@ -27,7 +30,8 @@ pub fn configure(config: &mut utoipa_actix_web::service_config::ServiceConfig, d
2730 . app_data ( web:: Data :: new ( db) )
2831 . service ( all)
2932 . service ( get)
30- . service ( analyze) ;
33+ . service ( analyze)
34+ . service ( analyze_v3) ;
3135}
3236
3337#[ allow( dead_code) ]
@@ -107,7 +111,7 @@ pub async fn get(
107111 tag = "vulnerability" ,
108112 request_body = AnalysisRequest ,
109113 responses(
110- ( status = 200 , description = "Analyze the provided purls to search for known vulnerabilities" , body = AnalysisResponse ) ,
114+ ( status = 200 , description = "Analyze the provided purls to search for known vulnerabilities" , body = AnalysisResponseV2 ) ,
111115 ) ,
112116) ]
113117#[ post( "/v2/vulnerability/analyze" ) ]
@@ -117,6 +121,27 @@ pub async fn analyze(
117121 db : web:: Data < Database > ,
118122 web:: Json ( AnalysisRequest { purls } ) : web:: Json < AnalysisRequest > ,
119123 _: Require < ReadAdvisory > ,
124+ ) -> actix_web:: Result < impl Responder > {
125+ let tx = db. begin_read ( ) . await ?;
126+ let details = service. analyze_purls_v2 ( purls, & tx) . await ?;
127+
128+ Ok ( HttpResponse :: Ok ( ) . json ( details) )
129+ }
130+
131+ #[ utoipa:: path(
132+ operation_id = "analyze_v3" ,
133+ tag = "vulnerability" ,
134+ request_body = AnalysisRequest ,
135+ responses(
136+ ( status = 200 , description = "Analyze the provided purls to search for known vulnerabilities" , body = AnalysisResponse ) ,
137+ ) ,
138+ ) ]
139+ #[ post( "/v3/vulnerability/analyze" ) ]
140+ pub async fn analyze_v3 (
141+ service : web:: Data < VulnerabilityService > ,
142+ db : web:: Data < Database > ,
143+ web:: Json ( AnalysisRequest { purls } ) : web:: Json < AnalysisRequest > ,
144+ _: Require < ReadAdvisory > ,
120145) -> actix_web:: Result < impl Responder > {
121146 let tx = db. begin_read ( ) . await ?;
122147 let details = service. analyze_purls ( purls, & tx) . await ?;
0 commit comments