class ActiveStorage::Service::GCSService
Attributes
bucket[R]
client[R]
Public Class Methods
new(project:, keyfile:, bucket:)
click to toggle source
# File lib/active_storage/service/gcs_service.rb, line 7 def initialize(project:, keyfile:, bucket:) @client = Google::Cloud::Storage.new(project: project, keyfile: keyfile) @bucket = @client.bucket(bucket) end
Public Instance Methods
delete(key)
click to toggle source
# File lib/active_storage/service/gcs_service.rb, line 24 def delete(key) file_for(key).try(:delete) end
download(key)
click to toggle source
FIXME: Add streaming when given a block
# File lib/active_storage/service/gcs_service.rb, line 18 def download(key) io = file_for(key).download io.rewind io.read end
exist?(key)
click to toggle source
# File lib/active_storage/service/gcs_service.rb, line 28 def exist?(key) file_for(key).present? end
upload(key, io, checksum: nil)
click to toggle source
# File lib/active_storage/service/gcs_service.rb, line 12 def upload(key, io, checksum: nil) # FIXME: Ensure integrity by sending the checksum for service side verification bucket.create_file(io, key) end
url(key, expires_in:, disposition:, filename:)
click to toggle source
# File lib/active_storage/service/gcs_service.rb, line 32 def url(key, expires_in:, disposition:, filename:) file_for(key).signed_url(expires: expires_in) + "&" + { "response-content-disposition" => "#{disposition}; filename=\"#{filename}\"" }.to_query end
Private Instance Methods
file_for(key)
click to toggle source
# File lib/active_storage/service/gcs_service.rb, line 38 def file_for(key) bucket.file(key) end