27
27
from packageurl import PackageURL
28
28
from packageurl .contrib .route import NoRouteAvailable
29
29
from packageurl .contrib .route import Router
30
+ import yaml
30
31
31
32
logger = logging .getLogger (__name__ )
32
33
@@ -61,7 +62,7 @@ def get_response(url, content_type="json", headers=None):
61
62
Fetch ``url`` and return its content as ``content_type`` which is one of
62
63
binary, text or json.
63
64
"""
64
- assert content_type in ("binary" , "text" , "json" )
65
+ assert content_type in ("binary" , "text" , "json" , "yaml" )
65
66
66
67
try :
67
68
resp = requests .get (url = url , headers = headers )
@@ -78,6 +79,10 @@ def get_response(url, content_type="json", headers=None):
78
79
return resp .text
79
80
elif content_type == "json" :
80
81
return resp .json ()
82
+ elif content_type == "yaml" :
83
+ content = resp .content .decode ("utf-8" )
84
+ return yaml .safe_load (content )
85
+
81
86
82
87
83
88
def remove_debian_default_epoch (version ):
@@ -294,17 +299,18 @@ def get_hex_versions_from_purl(purl):
294
299
)
295
300
296
301
297
- # @router.route("pkg:conan/.*")
298
- # def get_conan_versions_from_purl(purl):
299
- # """
300
- # Fetch versions of ``conan`` packages from the Conan API
301
- # """
302
- # response = get_response(
303
- # url=f"https://conan.io/center/api/ui/details?name={pkg}&user=_&channel=_",
304
- # content_type="json",
305
- # )
306
- # for release in response["versions"]:
307
- # yield PackageVersion(value=release["version"])
302
+ @router .route ("pkg:conan/.*" )
303
+ def get_conan_versions_from_purl (purl ):
304
+ """
305
+ Fetch versions of ``conan`` packages from the Conan API
306
+ """
307
+ purl = PackageURL .from_string (purl )
308
+ response = get_response (
309
+ url = f"https://raw.githubusercontent.com/conan-io/conan-center-index/master/recipes/{ purl .name } /config.yml" ,
310
+ content_type = "yaml" ,
311
+ )
312
+ for version in response ["versions" ].keys ():
313
+ yield PackageVersion (value = version )
308
314
309
315
# @router.route("pkg:golang/.*")
310
316
# def get_golang_versions_from_purl(purl):
0 commit comments