262b974123
There were several issues:
1. With Google Cloud Storage, we can't override the Content-Type with
Response-Content-Type once it is set. Setting the value to
`application/octet-stream` doesn't buy us anything. GCS defaults to
`application/octet-stream`, and AWS uses `binary/octet-stream`. Just remove
this `Content-Type` when we upload new files.
2. CarrierWave and fog-google need to support query parameters:
https://github.com/fog/fog-google/pull/409/files, https://github.com/carrierwaveuploader/carrierwave/pull/2332/files.
CarrierWave has been monkey-patched until an official release.
3. Workhorse also needs to remove the Content-Type header in the request
(ef80978ff8/internal/objectstore/object.go (L66)
),
or we'll get a 403 error when uploading due to signed URLs not matching the headers.
Upgrading to Workhorse 6.1.0 for https://gitlab.com/gitlab-org/gitlab-workhorse/merge_requests/297
will make Workhorse use the headers that are used by Rails.
Closes #49957
20 lines
430 B
Ruby
20 lines
430 B
Ruby
#
|
|
# Monkey patching the https support for private urls
|
|
# See https://gitlab.com/gitlab-org/gitlab-ee/issues/4879
|
|
#
|
|
module Fog
|
|
module Storage
|
|
class GoogleXML
|
|
class File < Fog::Model
|
|
module MonkeyPatch
|
|
def url(expires, options = {})
|
|
requires :key
|
|
collection.get_https_url(key, expires, options)
|
|
end
|
|
end
|
|
|
|
prepend MonkeyPatch
|
|
end
|
|
end
|
|
end
|
|
end
|