diff options
Diffstat (limited to 'app/uploaders/dependency_proxy/file_uploader.rb')
-rw-r--r-- | app/uploaders/dependency_proxy/file_uploader.rb | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/app/uploaders/dependency_proxy/file_uploader.rb b/app/uploaders/dependency_proxy/file_uploader.rb index b67a22bae4d..c46539bafaa 100644 --- a/app/uploaders/dependency_proxy/file_uploader.rb +++ b/app/uploaders/dependency_proxy/file_uploader.rb @@ -3,6 +3,7 @@ class DependencyProxy::FileUploader < GitlabUploader include ObjectStorage::Concern + before :cache, :set_content_type storage_options Gitlab.config.dependency_proxy alias_method :upload, :model @@ -17,6 +18,17 @@ class DependencyProxy::FileUploader < GitlabUploader private + # Docker manifests return a custom content type + # GCP will only use the content-type that is stored with the file + # and will not allow it to be overwritten when downloaded + # so we must store the custom content type in object storage. + # This does not apply to DependencyProxy::Blob uploads. + def set_content_type(file) + return unless model.class == DependencyProxy::Manifest + + file.content_type = model.content_type + end + def dynamic_segment Gitlab::HashedPath.new('dependency_proxy', model.group_id, 'files', model.id, root_hash: model.group_id) end |