def self.get_object(url, token, container, name, http_conn=nil, resp_chunk_size=nil, &block)
if not http_conn
http_conn = http_connection(url)
end
parsed = http_conn[0].clone
conn = http_conn[1]
parsed.path += "/#{quote(container)}/#{quote(name)}"
conn.start if not conn.started?
headers = {'x-auth-token' => token}
if block_given?
resp = conn.request_get(parsed.request_uri, headers) do |r|
r.read_body do |b|
yield b
end
end
object_body = nil
else
resp = conn.request_get(parsed.request_uri, headers)
object_body = resp.body
end
if resp.code.to_i < 200 or resp.code.to_i > 300
raise ClientException.new('Object GET failed', :http_scheme=>parsed.scheme,
:http_host=>conn.address, :http_port=>conn.port,
:http_path=>parsed.path, :http_status=>resp.code,
:http_reason=>resp.message)
end
resp_headers = {}
resp.header.each do |k,v|
resp_headers[k.downcase] = v
end
[resp_headers, object_body]
end