class ActiveStorage::Service::S3Service

def url_for_direct_upload(key, expires_in:, content_type:, content_length:, checksum:, custom_metadata: {})

def url_for_direct_upload(key, expires_in:, content_type:, content_length:, checksum:, custom_metadata: {})
  instrument :url, key: key do |payload|
    generated_url = object_for(key).presigned_url :put, expires_in: expires_in.to_i,
      content_type: content_type, content_length: content_length, content_md5: checksum,
      metadata: custom_metadata, whitelist_headers: ["content-length"], **upload_options
    payload[:url] = generated_url
    generated_url
  end
end