summaryrefslogtreecommitdiff
path: root/app/services/dependency_proxy/pull_manifest_service.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/dependency_proxy/pull_manifest_service.rb')
-rw-r--r--app/services/dependency_proxy/pull_manifest_service.rb18
1 files changed, 15 insertions, 3 deletions
diff --git a/app/services/dependency_proxy/pull_manifest_service.rb b/app/services/dependency_proxy/pull_manifest_service.rb
index fc54ef85c96..5c804489fd1 100644
--- a/app/services/dependency_proxy/pull_manifest_service.rb
+++ b/app/services/dependency_proxy/pull_manifest_service.rb
@@ -8,13 +8,25 @@ module DependencyProxy
@token = token
end
- def execute
+ def execute_with_manifest
+ raise ArgumentError, 'Block must be provided' unless block_given?
+
response = Gitlab::HTTP.get(manifest_url, headers: auth_headers)
if response.success?
- success(manifest: response.body)
+ file = Tempfile.new
+
+ begin
+ file.write(response)
+ file.flush
+
+ yield(success(file: file, digest: response.headers['docker-content-digest']))
+ ensure
+ file.close
+ file.unlink
+ end
else
- error(response.body, response.code)
+ yield(error(response.body, response.code))
end
rescue Timeout::Error => exception
error(exception.message, 599)