1616from app .limiter import limiter
1717from app .schemas import (
1818 ExpandPackageRequest ,
19+ ExpandReqFileRequest ,
1920 ExpandVersionRequest ,
2021 GetPackageStatusRequest ,
2122 GetVersionStatusRequest ,
2223 InitPackageRequest ,
2324 InitRepositoryRequest ,
2425 PackageMessageSchema ,
2526)
26- from app .services import PackageService , RepositoryService , VersionService
27+ from app .services import (
28+ PackageService ,
29+ RepositoryService ,
30+ VersionService ,
31+ )
2732from app .utils import JSONEncoder , RedisQueue
2833
2934router = APIRouter ()
@@ -225,7 +230,44 @@ async def init_repository(
225230 }),
226231 )
227232
228- @router .post (
233+ @router .get (
234+ "/graph/expand/req_file" ,
235+ summary = "Expand Requirement File" ,
236+ description = "Return requirement file info to expand its versions in the graph visualization." ,
237+ response_description = "Requirement file expansion data." ,
238+ dependencies = [Depends (get_dual_auth_bearer ())],
239+ tags = ["Secure Chain Depex - Graph" ]
240+ )
241+ @limiter .limit ("25/minute" )
242+ async def expand_req_file (
243+ request : Request ,
244+ expand_req_file_request : ExpandReqFileRequest = Depends (),
245+ package_service : PackageService = Depends (get_package_service ),
246+ json_encoder : JSONEncoder = Depends (get_json_encoder ),
247+ ) -> JSONResponse :
248+ expansion_data = await package_service .read_packages_expansion_by_req_file (
249+ expand_req_file_request .requirement_file_id
250+ )
251+ if expansion_data is None :
252+ return JSONResponse (
253+ status_code = status .HTTP_404_NOT_FOUND ,
254+ content = json_encoder .encode (
255+ {
256+ "code" : ResponseCode .REQ_FILE_NOT_FOUND ,
257+ "message" : ResponseMessage .REQ_FILE_NOT_FOUND ,
258+ }
259+ ),
260+ )
261+ return JSONResponse (
262+ status_code = status .HTTP_200_OK ,
263+ content = json_encoder .encode ({
264+ "code" : ResponseCode .EXPAND_REQ_FILE_SUCCESS ,
265+ "message" : ResponseMessage .REQ_FILE_EXPANSION_RETRIEVED_SUCCESS ,
266+ "data" : expansion_data
267+ })
268+ )
269+
270+ @router .get (
229271 "/graph/expand/package" ,
230272 summary = "Expand Package" ,
231273 description = "Return package info to expand its versions in the graph visualization." ,
@@ -236,11 +278,11 @@ async def init_repository(
236278@limiter .limit ("25/minute" )
237279async def expand_package (
238280 request : Request ,
239- expand_package_request : ExpandPackageRequest ,
281+ expand_package_request : ExpandPackageRequest = Depends () ,
240282 version_service : VersionService = Depends (get_version_service ),
241283 json_encoder : JSONEncoder = Depends (get_json_encoder ),
242284) -> JSONResponse :
243- expansion_data = await version_service .read_versions_by_package (
285+ expansion_data = await version_service .read_versions_expansion_by_package (
244286 expand_package_request .node_type .value ,
245287 expand_package_request .package_purl ,
246288 expand_package_request .constraints
@@ -264,7 +306,7 @@ async def expand_package(
264306 })
265307 )
266308
267- @router .post (
309+ @router .get (
268310 "/graph/expand/version" ,
269311 summary = "Expand Version" ,
270312 description = "Return version info to expand its dependencies in the graph visualization." ,
@@ -275,11 +317,11 @@ async def expand_package(
275317@limiter .limit ("25/minute" )
276318async def expand_version (
277319 request : Request ,
278- expand_version_request : ExpandVersionRequest ,
320+ expand_version_request : ExpandVersionRequest = Depends () ,
279321 package_service : PackageService = Depends (get_package_service ),
280322 json_encoder : JSONEncoder = Depends (get_json_encoder ),
281323) -> JSONResponse :
282- expansion_data = await package_service .read_packages_by_version_and_parent (
324+ expansion_data = await package_service .read_packages_expansion_by_version (
283325 expand_version_request .version_purl
284326 )
285327 if expansion_data is None :
0 commit comments