Class: Happening::S3::Bucket

Inherits:
Object
  • Object
show all
Includes:
Utils
Defined in:
lib/happening/s3/bucket.rb

Constant Summary collapse

REQUIRED_FIELDS =
[:server]
VALID_HEADERS =
['Cache-Control', 'Content-Disposition', 'Content-Encoding', 'Content-Length', 'Content-MD5', 'Content-Type', 'Expect', 'Expires']

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(bucket, options = {}) ⇒ Bucket

Returns a new instance of Bucket.



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/happening/s3/bucket.rb', line 14

def initialize(bucket, options = {})
  @options = {
    :timeout => 10,
    :server => 's3.amazonaws.com',
    :protocol => 'https',
    :aws_access_key_id => nil,
    :aws_secret_access_key => nil,
    :retry_count => 4,
    :permissions => 'private',
    :ssl         => Happening::S3.ssl_options,
    :prefix      => nil,
    :delimiter   => nil
  }.update(symbolize_keys(options))
  assert_valid_keys(options, :timeout, :server, :protocol, :aws_access_key_id, :aws_secret_access_key, :retry_count, :permissions, :ssl, :prefix, :delimiter)
  @bucket = bucket.to_s

  validate
end

Instance Attribute Details

#bucketObject

Returns the value of attribute bucket.



12
13
14
# File 'lib/happening/s3/bucket.rb', line 12

def bucket
  @bucket
end

#optionsObject

Returns the value of attribute options.



12
13
14
# File 'lib/happening/s3/bucket.rb', line 12

def options
  @options
end

Instance Method Details

#get(request_options = {}, &blk) ⇒ Object



33
34
35
36
37
38
# File 'lib/happening/s3/bucket.rb', line 33

def get(request_options = {}, &blk)
  headers = needs_to_sign? ? aws.sign("GET", path_with_query) : {}
  request_options[:on_success] = blk if blk
  request_options.update(:headers => headers)
  Happening::S3::Request.new(:get, url, {:ssl => options[:ssl]}.update(request_options)).execute
end

#path(with_bucket = true) ⇒ Object



48
49
50
# File 'lib/happening/s3/bucket.rb', line 48

def path(with_bucket=true)
  with_bucket ? "/#{bucket}/" : "/"
end

#path_with_query(with_bucket = true) ⇒ Object



52
53
54
55
56
# File 'lib/happening/s3/bucket.rb', line 52

def path_with_query(with_bucket=true)
  base  = path(with_bucket)
  query = query_string
  query ? "#{base}?#{query}" : base
end

#serverObject



44
45
46
# File 'lib/happening/s3/bucket.rb', line 44

def server
  dns_bucket? ? "#{bucket}.#{options[:server]}" : options[:server]
end

#urlObject



40
41
42
# File 'lib/happening/s3/bucket.rb', line 40

def url
  URI::Generic.new(options[:protocol], nil, server, port, nil, path(!dns_bucket?), nil, query_string, nil).to_s
end