Class: SitemapGenerator::S3Adapter

Inherits:
Object
  • Object
show all
Defined in:
lib/sitemap_generator/adapters/s3_adapter.rb

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ S3Adapter

Returns a new instance of S3Adapter.



10
11
12
13
14
15
16
# File 'lib/sitemap_generator/adapters/s3_adapter.rb', line 10

def initialize(opts = {})
  @aws_access_key_id = opts[:aws_access_key_id] || ENV['AWS_ACCESS_KEY_ID']
  @aws_secret_access_key = opts[:aws_secret_access_key] || ENV['AWS_SECRET_ACCESS_KEY']
  @fog_provider = opts[:fog_provider] || ENV['FOG_PROVIDER']
  @fog_directory = opts[:fog_directory] || ENV['FOG_DIRECTORY']
  @fog_region = opts[:fog_region] || ENV['FOG_REGION']
end

Instance Method Details

#write(location, raw_data) ⇒ Object

Call with a SitemapLocation and string data



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/sitemap_generator/adapters/s3_adapter.rb', line 19

def write(location, raw_data)
  SitemapGenerator::FileAdapter.new.write(location, raw_data)

  credentials = {
    :aws_access_key_id     => @aws_access_key_id,
    :aws_secret_access_key => @aws_secret_access_key,
    :provider              => @fog_provider,
  }
  credentials[:region] = @fog_region if @fog_region

  storage   = Fog::Storage.new(credentials)
  directory = storage.directories.new(:key => @fog_directory)
  directory.files.create(
    :key    => location.path_in_public,
    :body   => File.open(location.path),
    :public => true
  )
end