1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/lib/fog/rackspace/requests/storage/get_container.rb
Ash Wilson 6642ae013d Refactoring: #each_part in MockObject.
@bytes => @bytes_used in MockObject as well, for consistency with
MockContainer.
2013-12-20 12:18:36 -05:00

73 lines
2.6 KiB
Ruby

module Fog
module Storage
class Rackspace
class Real
# Get details for container and total bytes stored
#
# ==== Parameters
# * container<~String> - Name of container to retrieve info for
# * options<~String>:
# * 'limit'<~String> - Maximum number of objects to return
# * 'marker'<~String> - Only return objects whose name is greater than marker
# * 'prefix'<~String> - Limits results to those starting with prefix
# * 'path'<~String> - Return objects nested in the pseudo path
#
# ==== Returns
# * response<~Excon::Response>:
# * headers<~Hash>:
# * 'X-Account-Container-Count'<~String> - Count of containers
# * 'X-Account-Bytes-Used'<~String> - Bytes used
# * body<~Array>:
# * 'bytes'<~Integer> - Number of bytes used by container
# * 'count'<~Integer> - Number of items in container
# * 'name'<~String> - Name of container
# * item<~Hash>:
# * 'bytes'<~String> - Size of object
# * 'content_type'<~String> Content-Type of object
# * 'hash'<~String> - Hash of object (etag?)
# * 'last_modified'<~String> - Last modified timestamp
# * 'name'<~String> - Name of object
# @raise [Fog::Storage::Rackspace::NotFound] - HTTP 404
# @raise [Fog::Storage::Rackspace::BadRequest] - HTTP 400
# @raise [Fog::Storage::Rackspace::InternalServerError] - HTTP 500
# @raise [Fog::Storage::Rackspace::ServiceError]
def get_container(container, options = {})
options = options.reject {|key, value| value.nil?}
request(
:expects => 200,
:method => 'GET',
:path => Fog::Rackspace.escape(container),
:query => {'format' => 'json'}.merge!(options)
)
end
end
class Mock
def get_container(container, options = {})
c = mock_container! container
results = []
c.objects.each do |key, mock_file|
results << {
"hash" => mock_file.hash,
"last_modified" => mock_file.last_modified.strftime('%Y-%m-%dT%H:%M:%S.%L'),
"bytes" => mock_file.bytes_used,
"name" => key,
"content_type" => mock_file.content_type
}
end
response = Excon::Response.new
response.status = 200
response.headers = c.to_headers
response.body = results
response
end
end
end
end
end