class Fog::AWS::Storage::Files

Constants

DASHED_HEADERS

Public Instance Methods

all(options = {}) click to toggle source
# File lib/fog/aws/models/storage/files.rb, line 29
def all(options = {})
  requires :directory
  options = {
    'delimiter'   => delimiter,
    'marker'      => marker,
    'max-keys'    => max_keys,
    'prefix'      => prefix
  }.merge!(options)
  options = options.reject {|key,value| value.nil? || value.to_s.empty?}
  merge_attributes(options)
  parent = directory.collection.get(
    directory.key,
    options
  )
  if parent
    merge_attributes(parent.files.attributes)
    load(parent.files.map {|file| file.attributes})
  else
    nil
  end
end
each() { |f| ... } click to toggle source
# File lib/fog/aws/models/storage/files.rb, line 52
def each
  if !block_given?
    self
  else
    subset = dup.all

    subset.each_file_this_page {|f| yield f}
    while subset.is_truncated
      subset = subset.all(:marker => subset.last.key)
      subset.each_file_this_page {|f| yield f}
    end

    self
  end
end
Also aliased as: each_file_this_page
each_file_this_page()
Alias for: each
get(key, options = {}, &block) click to toggle source
# File lib/fog/aws/models/storage/files.rb, line 68
def get(key, options = {}, &block)
  requires :directory
  data = service.get_object(directory.key, key, options, &block)
  normalize_headers(data)
  file_data = data.headers.merge({
    :body => data.body,
    :key  => key
  })
  new(file_data)
rescue Excon::Errors::NotFound => error
  case error.response.body
  when /<Code>NoSuchKey<\/Code>/
    nil
  when /<Code>NoSuchBucket<\/Code>/
    raise(Fog::AWS::Storage::NotFound.new("Directory #{directory.identity} does not exist."))
  else
    raise(error)
  end
end
get_http_url(key, expires, options = {}) click to toggle source
# File lib/fog/aws/models/storage/files.rb, line 93
def get_http_url(key, expires, options = {})
  requires :directory
  service.get_object_http_url(directory.key, key, expires, options)
end
get_https_url(key, expires, options = {}) click to toggle source
# File lib/fog/aws/models/storage/files.rb, line 98
def get_https_url(key, expires, options = {})
  requires :directory
  service.get_object_https_url(directory.key, key, expires, options)
end
get_url(key, expires, options = {}) click to toggle source
# File lib/fog/aws/models/storage/files.rb, line 88
def get_url(key, expires, options = {})
  requires :directory
  service.get_object_url(directory.key, key, expires, options)
end
head(key, options = {}) click to toggle source
# File lib/fog/aws/models/storage/files.rb, line 108
def head(key, options = {})
  requires :directory
  data = service.head_object(directory.key, key, options)
  normalize_headers(data)
  file_data = data.headers.merge({
    :key => key
  })
  new(file_data)
rescue Excon::Errors::NotFound
  nil
end
head_url(key, expires, options = {}) click to toggle source
# File lib/fog/aws/models/storage/files.rb, line 103
def head_url(key, expires, options = {})
  requires :directory
  service.head_object_url(directory.key, key, expires, options)
end
new(attributes = {}) click to toggle source
Calls superclass method
# File lib/fog/aws/models/storage/files.rb, line 120
def new(attributes = {})
  requires :directory
  super({ :directory => directory }.merge!(attributes))
end
normalize_headers(data) click to toggle source
# File lib/fog/aws/models/storage/files.rb, line 125
def normalize_headers(data)
  data.headers['Last-Modified'] = Time.parse(fetch_and_delete_header(data, 'Last-Modified'))

  etag = fetch_and_delete_header(data, 'ETag').gsub('"','')
  data.headers['ETag'] = etag

  DASHED_HEADERS.each do |header|
    value = fetch_and_delete_header(data, header)
    data.headers[header] = value if value
  end
end

Private Instance Methods

fetch_and_delete_header(response, header) click to toggle source
# File lib/fog/aws/models/storage/files.rb, line 139
def fetch_and_delete_header(response, header)
  value = response.get_header(header)

  return unless value

  response.headers.keys.each do |key|
    response.headers.delete(key) if key.downcase == header.downcase
  end

  value
end