Class: Fog::Rackspace::Storage::Real
- Inherits:
-
Object
- Object
- Fog::Rackspace::Storage::Real
- Includes:
- Utils
- Defined in:
- lib/fog/storage/rackspace.rb,
lib/fog/storage/requests/rackspace/get_object.rb,
lib/fog/storage/requests/rackspace/put_object.rb,
lib/fog/storage/requests/rackspace/head_object.rb,
lib/fog/storage/requests/rackspace/delete_object.rb,
lib/fog/storage/requests/rackspace/get_container.rb,
lib/fog/storage/requests/rackspace/put_container.rb,
lib/fog/storage/requests/rackspace/get_containers.rb,
lib/fog/storage/requests/rackspace/head_container.rb,
lib/fog/storage/requests/rackspace/head_containers.rb,
lib/fog/storage/requests/rackspace/delete_container.rb
Instance Method Summary collapse
-
#delete_container(name) ⇒ Object
Delete an existing container.
-
#delete_object(container, object) ⇒ Object
Delete an existing container.
-
#get_container(container, options = {}) ⇒ Object
Get details for container and total bytes stored.
-
#get_containers(options = {}) ⇒ Object
List existing storage containers.
-
#get_object(container, object, &block) ⇒ Object
Get details for object.
-
#head_container(container) ⇒ Object
List number of objects and total bytes stored.
-
#head_containers ⇒ Object
List number of containers and total bytes stored.
-
#head_object(container, object) ⇒ Object
Get headers for object.
-
#initialize(options = {}) ⇒ Real
constructor
A new instance of Real.
-
#put_container(name) ⇒ Object
Create a new container.
-
#put_object(container, object, data, options = {}) ⇒ Object
Create a new object.
- #reload ⇒ Object
- #request(params, parse_json = true, &block) ⇒ Object
Methods included from Utils
Constructor Details
#initialize(options = {}) ⇒ Real
Returns a new instance of Real.
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/fog/storage/rackspace.rb', line 94 def initialize(={}) unless .delete(:provider) location = caller.first warning = "[yellow][WARN] Fog::Rackspace::Storage.new is deprecated, use Fog::Storage.new(:provider => 'Rackspace') instead[/]" warning << " [light_black](" << location << ")[/] " Formatador.display_line(warning) end require 'mime/types' require 'json' @rackspace_api_key = [:rackspace_api_key] @rackspace_username = [:rackspace_username] credentials = Fog::Rackspace.authenticate() @auth_token = credentials['X-Auth-Token'] uri = URI.parse(credentials['X-Storage-Url']) @host = uri.host @path = uri.path @port = uri.port @scheme = uri.scheme @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}", [:persistent]) end |
Instance Method Details
#delete_container(name) ⇒ Object
Delete an existing container
Parameters
-
name<~String> - Name of container to delete
11 12 13 14 15 16 17 18 |
# File 'lib/fog/storage/requests/rackspace/delete_container.rb', line 11 def delete_container(name) response = request( :expects => 204, :method => 'DELETE', :path => CGI.escape(name) ) response end |
#delete_object(container, object) ⇒ Object
Delete an existing container
Parameters
-
container<~String> - Name of container to delete
-
object<~String> - Name of object to delete
12 13 14 15 16 17 18 19 |
# File 'lib/fog/storage/requests/rackspace/delete_object.rb', line 12 def delete_object(container, object) response = request( :expects => 204, :method => 'DELETE', :path => "#{CGI.escape(container)}/#{CGI.escape(object)}" ) response end |
#get_container(container, options = {}) ⇒ Object
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
-
-
-
31 32 33 34 35 36 37 38 39 40 |
# File 'lib/fog/storage/requests/rackspace/get_container.rb', line 31 def get_container(container, = {}) = .reject {|key, value| value.nil?} response = request( :expects => 200, :method => 'GET', :path => container, :query => {'format' => 'json'}.merge!() ) response end |
#get_containers(options = {}) ⇒ Object
List existing storage containers
Parameters
-
options<~Hash>:
-
‘limit’<~Integer> - Upper limit to number of results returned
-
‘marker’<~String> - Only return objects with name greater than this value
-
Returns
-
response<~Excon::Response>:
-
body<~Array>:
-
container<~Hash>:
-
‘bytes’<~Integer>: - Number of bytes used by container
-
‘count’<~Integer>: - Number of items in container
-
‘name’<~String>: - Name of container
-
-
-
20 21 22 23 24 25 26 27 28 29 |
# File 'lib/fog/storage/requests/rackspace/get_containers.rb', line 20 def get_containers( = {}) = .reject {|key, value| value.nil?} response = request( :expects => [200, 204], :method => 'GET', :path => '', :query => {'format' => 'json'}.merge!() ) response end |
#get_object(container, object, &block) ⇒ Object
Get details for object
Parameters
-
container<~String> - Name of container to look in
-
object<~String> - Name of object to look for
12 13 14 15 16 17 18 19 20 |
# File 'lib/fog/storage/requests/rackspace/get_object.rb', line 12 def get_object(container, object, &block) response = request({ :block => block, :expects => 200, :method => 'GET', :path => "#{CGI.escape(container)}/#{CGI.escape(object)}" }, false, &block) response end |
#head_container(container) ⇒ Object
List number of objects and total bytes stored
Parameters
-
container<~String> - Name of container to retrieve info for
Returns
-
response<~Excon::Response>:
-
headers<~Hash>:
-
‘X-Container-Object-Count’<~String> - Count of containers
-
‘X-Container-Bytes-Used’<~String> - Bytes used
-
-
16 17 18 19 20 21 22 23 24 |
# File 'lib/fog/storage/requests/rackspace/head_container.rb', line 16 def head_container(container) response = request( :expects => 204, :method => 'HEAD', :path => container, :query => {'format' => 'json'} ) response end |
#head_containers ⇒ Object
List number of containers and total bytes stored
Returns
-
response<~Excon::Response>:
-
headers<~Hash>:
-
‘X-Account-Container-Count’<~String> - Count of containers
-
‘X-Account-Bytes-Used’<~String> - Bytes used
-
-
13 14 15 16 17 18 19 20 21 |
# File 'lib/fog/storage/requests/rackspace/head_containers.rb', line 13 def head_containers response = request( :expects => 204, :method => 'HEAD', :path => '', :query => {'format' => 'json'} ) response end |
#head_object(container, object) ⇒ Object
Get headers for object
Parameters
-
container<~String> - Name of container to look in
-
object<~String> - Name of object to look for
12 13 14 15 16 17 18 19 |
# File 'lib/fog/storage/requests/rackspace/head_object.rb', line 12 def head_object(container, object) response = request({ :expects => 200, :method => 'GET', :path => "#{CGI.escape(container)}/#{CGI.escape(object)}" }, false) response end |
#put_container(name) ⇒ Object
Create a new container
Parameters
-
name<~String> - Name for container, should be < 256 bytes and must not contain ‘/’
11 12 13 14 15 16 17 18 |
# File 'lib/fog/storage/requests/rackspace/put_container.rb', line 11 def put_container(name) response = request( :expects => [201, 202], :method => 'PUT', :path => CGI.escape(name) ) response end |
#put_object(container, object, data, options = {}) ⇒ Object
Create a new object
Parameters
-
container<~String> - Name for container, should be < 256 bytes and must not contain ‘/’
11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/fog/storage/requests/rackspace/put_object.rb', line 11 def put_object(container, object, data, = {}) data = parse_data(data) headers = data[:headers].merge!() response = request( :body => data[:body], :expects => 201, :headers => headers, :method => 'PUT', :path => "#{CGI.escape(container)}/#{CGI.escape(object)}" ) response end |
#reload ⇒ Object
117 118 119 |
# File 'lib/fog/storage/rackspace.rb', line 117 def reload @storage_connection.reset end |
#request(params, parse_json = true, &block) ⇒ Object
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/fog/storage/rackspace.rb', line 121 def request(params, parse_json = true, &block) begin response = @connection.request(params.merge!({ :headers => { 'Content-Type' => 'application/json', 'X-Auth-Token' => @auth_token }.merge!(params[:headers] || {}), :host => @host, :path => "#{@path}/#{params[:path]}", }), &block) rescue Excon::Errors::HTTPStatusError => error raise case error when Excon::Errors::NotFound Fog::Rackspace::Storage::NotFound.slurp(error) else error end end if !response.body.empty? && parse_json && response.headers['Content-Type'] =~ %r{application/json} response.body = JSON.parse(response.body) end response end |