summaryrefslogtreecommitdiff
path: root/app/services/packages/nuget/metadata_extraction_service.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/packages/nuget/metadata_extraction_service.rb')
-rw-r--r--app/services/packages/nuget/metadata_extraction_service.rb27
1 files changed, 18 insertions, 9 deletions
diff --git a/app/services/packages/nuget/metadata_extraction_service.rb b/app/services/packages/nuget/metadata_extraction_service.rb
index dd5f1bcc936..63da98dde43 100644
--- a/app/services/packages/nuget/metadata_extraction_service.rb
+++ b/app/services/packages/nuget/metadata_extraction_service.rb
@@ -28,7 +28,7 @@ module Packages
def execute
raise ExtractionError, 'invalid package file' unless valid_package_file?
- extract_metadata(nuspec_file)
+ extract_metadata(nuspec_file_content)
end
private
@@ -39,6 +39,10 @@ module Packages
end
end
+ def project
+ package_file.package.project
+ end
+
def valid_package_file?
package_file &&
package_file.package&.nuget? &&
@@ -89,16 +93,21 @@ module Packages
tags.split(::Packages::Tag::NUGET_TAGS_SEPARATOR)
end
- def nuspec_file
- package_file.file.use_file do |file_path|
- Zip::File.open(file_path) do |zip_file|
- entry = zip_file.glob('*.nuspec').first
+ def nuspec_file_content
+ with_zip_file do |zip_file|
+ entry = zip_file.glob('*.nuspec').first
- raise ExtractionError, 'nuspec file not found' unless entry
- raise ExtractionError, 'nuspec file too big' if entry.size > MAX_FILE_SIZE
+ raise ExtractionError, 'nuspec file not found' unless entry
+ raise ExtractionError, 'nuspec file too big' if entry.size > MAX_FILE_SIZE
- entry.get_input_stream.read
- end
+ entry.get_input_stream.read
+ end
+ end
+
+ def with_zip_file(&block)
+ package_file.file.use_open_file do |open_file|
+ zip_file = Zip::File.new(open_file, false, true)
+ yield(zip_file)
end
end
end