~cytrogen/masto-fe

8acc75435b4dcf959b6d5bb15c429abeef098437 — Claire 2 years ago bb6c59a
Change S3 checksum mode to be disabled by default (#27007)

1 files changed, 16 insertions(+), 18 deletions(-)

M config/initializers/paperclip.rb
M config/initializers/paperclip.rb => config/initializers/paperclip.rb +16 -18
@@ 91,28 91,26 @@ if ENV['S3_ENABLED'] == 'true'
  # Some S3-compatible providers might not actually be compatible with some APIs
  # used by kt-paperclip, see https://github.com/mastodon/mastodon/issues/16822
  # and https://github.com/mastodon/mastodon/issues/26394
  if ENV['S3_FORCE_SINGLE_REQUEST'] == 'true' || ENV['S3_DISABLE_CHECKSUM_MODE'] == 'true'
    module Paperclip
      module Storage
        module S3Extensions
          def copy_to_local_file(style, local_dest_path)
            log("copying #{path(style)} to local file #{local_dest_path}")

            options = {}
            options[:mode] = 'single_request' if ENV['S3_FORCE_SINGLE_REQUEST'] == 'true'
            options[:checksum_mode] = 'DISABLED' if ENV['S3_DISABLE_CHECKSUM_MODE'] == 'true'

            s3_object(style).download_file(local_dest_path, options)
          rescue Aws::Errors::ServiceError => e
            warn("#{e} - cannot copy #{path(style)} to local file #{local_dest_path}")
            false
          end
  module Paperclip
    module Storage
      module S3Extensions
        def copy_to_local_file(style, local_dest_path)
          log("copying #{path(style)} to local file #{local_dest_path}")

          options = {}
          options[:mode] = 'single_request' if ENV['S3_FORCE_SINGLE_REQUEST'] == 'true'
          options[:checksum_mode] = 'DISABLED' unless ENV['S3_ENABLE_CHECKSUM_MODE'] == 'true'

          s3_object(style).download_file(local_dest_path, options)
        rescue Aws::Errors::ServiceError => e
          warn("#{e} - cannot copy #{path(style)} to local file #{local_dest_path}")
          false
        end
      end
    end

    Paperclip::Storage::S3.prepend(Paperclip::Storage::S3Extensions)
  end

  Paperclip::Storage::S3.prepend(Paperclip::Storage::S3Extensions)
elsif ENV['SWIFT_ENABLED'] == 'true'
  require 'fog/openstack'