Method: CloudFiles::Connection#containers_detail
- Defined in:
- lib/vendor/cloudfiles-1.3.0/cloudfiles/connection.rb
#containers_detail(limit = 0, marker = "") ⇒ Object Also known as: list_containers_info
Retrieves a list of containers on the account along with their sizes (in bytes) and counts of the objects held within them. If no containers exist, an empty hash is returned. Throws an InvalidResponseException if the request fails.
If you supply the optional limit and marker parameters, the call will return the number of containers specified in limit, starting after the object named in marker.
cf.containers_detail
=> { "container1" => { :bytes => "36543", :count => "146" },
"container2" => { :bytes => "105943", :count => "25" } }
134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
# File 'lib/vendor/cloudfiles-1.3.0/cloudfiles/connection.rb', line 134 def containers_detail(limit=0,marker="") paramarr = [] paramarr << ["limit=#{URI.encode(limit.to_s)}"] if limit.to_i > 0 paramarr << ["offset=#{URI.encode(marker.to_s)}"] unless marker.to_s.empty? paramstr = (paramarr.size > 0)? paramarr.join("&") : "" ; response = cfreq("GET",@storagehost,"#{@storagepath}?format=xml&#{paramstr}") return {} if (response.code == "204") raise InvalidResponseException, "Invalid response code #{response.code}" unless (response.code == "200") doc = REXML::Document.new(response.body) detailhash = {} doc.elements.each("account/container/") { |c| detailhash[c.elements["name"].text] = { :bytes => c.elements["bytes"].text, :count => c.elements["count"].text } } doc = nil return detailhash end |