3131from minecode .visitors import HttpVisitor
3232from minecode .visitors import NonPersistentHttpVisitor
3333from minecode .visitors import URI
34- from minecode .utils import get_temp_file
34+ from minecode .utils import fetch_and_write_file_from_url
3535from minecode .utils import get_package_sha1
3636from packagedb .models import make_relationship
3737from packagedb .models import PackageContentType
@@ -426,20 +426,13 @@ def get_debian_package_metadata(debian_package):
426426 error = ''
427427
428428 metadata_url = debian_package .package_metadata_url
429- response = requests . get ( metadata_url )
430- if not response . ok :
431- msg = f'Package metadata not exist on debian: { metadata_url } '
429+ temp_metadata_file = fetch_and_write_file_from_url ( url = metadata_url )
430+ if not temp_metadata_file :
431+ msg = f'Package metadata does not exist on debian: { metadata_url } '
432432 error += msg + '\n '
433433 logger .error (msg )
434434 return None , error
435435
436- metadata_content = response .text
437- filename = metadata_url .split ("/" )[- 1 ]
438- file_name , _ , extension = filename .rpartition ("." )
439- temp_metadata_file = get_temp_file (file_name = file_name , extension = extension )
440- with open (temp_metadata_file , 'a' ) as metadata_file :
441- metadata_file .write (metadata_content )
442-
443436 packages = DebianDscFileHandler .parse (location = temp_metadata_file )
444437 package = list (packages ).pop ()
445438
@@ -454,20 +447,13 @@ def get_debian_package_copyright(debian_package):
454447 error = ''
455448
456449 metadata_url = debian_package .package_copyright_url
457- response = requests . get ( metadata_url )
458- if not response . ok :
450+ temp_metadata_file = fetch_and_write_file_from_url ( url = metadata_url )
451+ if not temp_metadata_file :
459452 msg = f'Package metadata does not exist on debian: { metadata_url } '
460453 error += msg + '\n '
461454 logger .error (msg )
462455 return None , error
463456
464- metadata_content = response .text
465- filename = metadata_url .split ("/" )[- 1 ]
466- file_name , _ , extension = filename .rpartition ("." )
467- temp_metadata_file = get_temp_file (file_name = file_name , extension = extension )
468- with open (temp_metadata_file , 'a' ) as metadata_file :
469- metadata_file .write (metadata_content )
470-
471457 packages = StandaloneDebianCopyrightFileHandler .parse (location = temp_metadata_file )
472458 package = list (packages ).pop ()
473459
@@ -636,6 +622,11 @@ def package_metadata_url(self):
636622
637623 @property
638624 def package_copyright_url (self ):
625+ # Copyright files for ubuntu are named just `copyright` and placed under a name-version folder
626+ # instead of having the name-version in the copyright file itself
627+ copyright_file_string = "_copyright"
628+ if self .package_url .namespace == "ubuntu" :
629+ copyright_file_string = "/copyright"
639630
640631 metadata_version = self .package_archive_version
641632 if not self .source_package_url :
@@ -645,11 +636,11 @@ def package_copyright_url(self):
645636 if self .source_package_url .version :
646637 metadata_version = self .source_package_url .version
647638
648- copyright_package_url = self .metadata_directory_url + f"{ metadata_package_name } _{ metadata_version } _copyright "
639+ copyright_package_url = self .metadata_directory_url + f"{ metadata_package_name } _{ metadata_version } { copyright_file_string } "
649640 response = requests .get (copyright_package_url )
650641 if not response .ok :
651642 base_version_metadata = metadata_version .split ('+' )[0 ]
652- copyright_package_url = self .metadata_directory_url + f"{ metadata_package_name } _{ base_version_metadata } _copyright "
643+ copyright_package_url = self .metadata_directory_url + f"{ metadata_package_name } _{ base_version_metadata } { copyright_file_string } "
653644
654645 return copyright_package_url
655646
0 commit comments