class DZT::S3Storage

Constants

DEFAULT_ACL
DEFAULT_KEY

Public Class Methods

new(options = {}) click to toggle source

@param s3_acl: ACL to use for storing, defaults to 'public-read'. @param s3_bucket: Bucket to store tiles. @param s3_key: Key to prefix stored files. @param aws_id: AWS Id. @param aws_secret: AWS Secret.

# File lib/dzt/s3_storage.rb, line 12
def initialize(options = {})
  @s3_acl = options[:s3_acl] || DEFAULT_ACL
  @s3_bucket = options[:s3_bucket]
  @s3_key = options[:s3_key] || DEFAULT_KEY
  @s3_id = options[:aws_id]
  @s3_secret = options[:aws_secret]
end

Public Instance Methods

exists?() click to toggle source

Currently does not supporting checking S3 fo overwritten files

# File lib/dzt/s3_storage.rb, line 32
def exists?
  false
end
mkdir(_path) click to toggle source

no-op

# File lib/dzt/s3_storage.rb, line 41
def mkdir(_path)
end
s3() click to toggle source
# File lib/dzt/s3_storage.rb, line 20
def s3
  @s3 ||= begin
    require_fog!
    Fog::Storage.new(
      provider: 'AWS',
      aws_access_key_id: @s3_id,
      aws_secret_access_key: @s3_secret
    )
  end
end
storage_location(level) click to toggle source
# File lib/dzt/s3_storage.rb, line 36
def storage_location(level)
  "#{@s3_key}/#{level}"
end
write(file, dest, options = {}) click to toggle source
# File lib/dzt/s3_storage.rb, line 44
def write(file, dest, options = {})
  quality = options[:quality]
  s3.put_object(@s3_bucket, dest, file.to_blob { @quality = quality if quality },
                'Content-Type' => file.mime_type,
                'x-amz-acl' => @s3_acl
               )
end

Private Instance Methods

require_fog!() click to toggle source
# File lib/dzt/s3_storage.rb, line 54
def require_fog!
  require 'fog/aws'
rescue LoadError => e
  STDERR.puts 'Fog is required for storing data in S3, run `gem install fog-aws`.'
  raise e
end