class AudioFeedManager::S3Gateway

Public Instance Methods

sync(key, file_name) { |key| ... } click to toggle source
# File lib/audio_feed_manager/s3_gateway.rb, line 12
def sync(key, file_name, &block)
  return unless needs_syncing?(key, file_name)
  yield key if block_given?

  object = bucket.object(key)
  object.upload_file(file_name)
  object.acl.put(acl: "public-read")
end
url(path) click to toggle source
# File lib/audio_feed_manager/s3_gateway.rb, line 8
def url(path)
  bucket.object(path).public_url
end

Private Instance Methods

bucket() click to toggle source
# File lib/audio_feed_manager/s3_gateway.rb, line 35
def bucket
  @bucket ||= s3.bucket(config.s3_bucket)
end
needs_syncing?(key, file_name) click to toggle source
# File lib/audio_feed_manager/s3_gateway.rb, line 23
def needs_syncing?(key, file_name)
  object = bucket.object(key)
  return true unless object.exists?
  object.etag.gsub('"', '') != Digest::MD5.file(file_name).to_s
end
s3() click to toggle source
# File lib/audio_feed_manager/s3_gateway.rb, line 29
def s3
  @s3 ||= Aws::S3::Resource.new(access_key_id: config.s3_access_key,
                                secret_access_key: config.s3_secret,
                                region: config.s3_region)
end