@@ -29,10 +29,10 @@ def get_packages(self, uri, resource_uri):
2929 """
3030 # FIXME: JSON deserialization should be handled eventually by the framework
3131 metadata = json .loads (resource_uri .data )
32- return build_packages_with_json (metadata , resource_uri .package_url )
32+ return build_packages_with_json (metadata , resource_uri .package_url , uri )
3333
3434
35- def build_packages_with_json (metadata , purl = None ):
35+ def build_packages_with_json (metadata , purl = None , uri = None ):
3636 """
3737 Yield Package built from Eclipse a `metadata` mapping
3838 The package can contain multiple projects, and each project can contain
@@ -44,6 +44,7 @@ def build_packages_with_json(metadata, purl=None):
4444 projects = metadata ['projects' ]
4545 for project , project_metadata in projects .items ():
4646 common_data = dict (
47+ datasource_id = "eclipse_metadata" ,
4748 type = 'eclipse' ,
4849 name = project ,
4950 )
@@ -70,7 +71,10 @@ def build_packages_with_json(metadata, purl=None):
7071 durl = download_url .get ('url' )
7172 if durl :
7273 common_data ['download_url' ] = durl
73- package = scan_models .Package (** common_data )
74+ package = scan_models .Package .from_package_data (
75+ package_data = common_data ,
76+ datafile_path = uri ,
77+ )
7478 package .set_purl (purl )
7579 yield package
7680
@@ -84,16 +88,19 @@ def get_packages(self, uri, resource_uri):
8488 Yield as many Package as there are download URLs.
8589 """
8690 # FIXME: JSON deserialization should be handled eventually by the framework
87- return build_packages (resource_uri .data , resource_uri .package_url )
91+ return build_packages (resource_uri .data , resource_uri .package_url , uri )
8892
8993
90- def build_packages (html_text , purl = None ):
94+ def build_packages (html_text , purl = None , uri = None ):
9195 """
9296 Yield Package objects built from `html_text`and the `purl` package URL
9397 string.
9498 """
9599 page = BeautifulSoup (html_text , 'lxml' )
96- common_data = dict (type = 'eclipse' )
100+ common_data = dict (
101+ datasource_id = "eclipse_html" ,
102+ type = 'eclipse' ,
103+ )
97104
98105 extracted_license_statement = []
99106 for meta in page .find_all (name = 'meta' ):
@@ -126,7 +133,10 @@ def build_packages(html_text, purl=None):
126133 if str (a .contents [0 ]).strip () == 'Downloads' :
127134 download_data = dict (download_url = a ['href' ],)
128135 download_data .update (common_data )
129- package = scan_models .Package (** download_data )
136+ package = scan_models .Package .from_package_data (
137+ package_data = download_data ,
138+ datafile_path = uri ,
139+ )
130140 package .set_purl (purl )
131141 yield package
132142
@@ -151,8 +161,14 @@ def build_packages(html_text, purl=None):
151161
152162 version = a .contents [0 ]
153163 href = a ['href' ]
154- download_data = dict (version = version , download_url = href )
164+ download_data = dict (
165+ version = version ,
166+ download_url = href ,
167+ )
155168 download_data .update (common_data )
156- package = scan_models .Package (** download_data )
169+ package = scan_models .Package .from_package_data (
170+ package_data = download_data ,
171+ datafile_path = uri ,
172+ )
157173 package .set_purl (purl )
158174 yield package
0 commit comments