Class: Stree::Connection
- Inherits:
-
Object
- Object
- Stree::Connection
- Includes:
- Parser
- Defined in:
- lib/stree/connection.rb
Overview
Class responsible for handling connections to amazon hosts
Instance Attribute Summary collapse
-
#access_key_id ⇒ Object
Returns the value of attribute access_key_id.
-
#debug ⇒ Object
Returns the value of attribute debug.
-
#secret_access_key ⇒ Object
Returns the value of attribute secret_access_key.
-
#timeout ⇒ Object
Returns the value of attribute timeout.
-
#use_ssl ⇒ Object
(also: #use_ssl?)
Returns the value of attribute use_ssl.
Class Method Summary collapse
-
.parse_headers(headers) ⇒ Object
Helper function to change headers from symbols, to in correct form (i.e. with ‘-’ instead of ‘_’).
-
.parse_params(params) ⇒ Object
Helper function to parser parameters and create single string of params added to questy string.
Instance Method Summary collapse
-
#initialize(options = {}) ⇒ Connection
constructor
Parameters:
options
:: Hash of options. -
#request(method, options) ⇒ Object
Makes request with given HTTP method, sets missing parameters, adds signature to request header and returns response object (Net::HTTPResponse).
Methods included from Parser
#parse_copy_object_result, #parse_error, #parse_list_all_my_buckets_result, #parse_list_bucket_result, #parse_location_constraint, #rexml_document
Constructor Details
#initialize(options = {}) ⇒ Connection
Parameters:
options
-
Hash of options
Options:
access_key_id
-
access key id
secret_access_key
-
secret access key
use_ssl
-
optional, defaults to false
debug
-
optional, defaults to false
timeout
-
optional, for Net::HTTP
19 20 21 22 23 24 25 |
# File 'lib/stree/connection.rb', line 19 def initialize( = {}) @access_key_id = [:access_key_id] @secret_access_key = [:secret_access_key] @use_ssl = [:use_ssl] || false @debug = [:debug] @timeout = [:timeout] end |
Instance Attribute Details
#access_key_id ⇒ Object
Returns the value of attribute access_key_id.
7 8 9 |
# File 'lib/stree/connection.rb', line 7 def access_key_id @access_key_id end |
#debug ⇒ Object
Returns the value of attribute debug.
7 8 9 |
# File 'lib/stree/connection.rb', line 7 def debug @debug end |
#secret_access_key ⇒ Object
Returns the value of attribute secret_access_key.
7 8 9 |
# File 'lib/stree/connection.rb', line 7 def secret_access_key @secret_access_key end |
#timeout ⇒ Object
Returns the value of attribute timeout.
7 8 9 |
# File 'lib/stree/connection.rb', line 7 def timeout @timeout end |
#use_ssl ⇒ Object Also known as: use_ssl?
Returns the value of attribute use_ssl.
7 8 9 |
# File 'lib/stree/connection.rb', line 7 def use_ssl @use_ssl end |
Class Method Details
.parse_headers(headers) ⇒ Object
Helper function to change headers from symbols, to in correct form (i.e. with ‘-’ instead of ‘_’)
Parameters:
headers
-
Hash of pairs
headername => value
, where value can be Range (for Range header) or any other value which can be translated to string
Returns:
Hash of headers translated from symbol to string, containing only interesting headers
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
# File 'lib/stree/connection.rb', line 107 def self.parse_headers(headers) interesting_keys = [:content_type, :x_amz_acl, :range, :if_modified_since, :if_unmodified_since, :if_match, :if_none_match, :content_disposition, :content_encoding, :x_amz_copy_source, :x_amz_metadata_directive, :x_amz_copy_source_if_match, :x_amz_copy_source_if_none_match, :x_amz_copy_source_if_unmodified_since, :x_amz_copy_source_if_modified_since] parsed_headers = {} if headers headers.each do |key, value| if interesting_keys.include?(key) parsed_key = key.to_s.gsub("_", "-") parsed_value = value case value when Range parsed_value = "bytes=#{value.first}-#{value.last}" end parsed_headers[parsed_key] = parsed_value end end end parsed_headers end |
.parse_params(params) ⇒ Object
Helper function to parser parameters and create single string of params added to questy string
Parameters:
params
: Hash of parameters if form key => value|nil
Returns:
String – containing all parameters joined in one params string, i.e. param1=val¶m2¶m3=0
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/stree/connection.rb', line 78 def self.parse_params(params) interesting_keys = [:max_keys, :prefix, :marker, :delimiter, :location] result = [] params.each do |key, value| if interesting_keys.include?(key) parsed_key = key.to_s.gsub("_", "-") case value when nil result << parsed_key else result << "#{parsed_key}=#{value}" end end end result.join("&") end |
Instance Method Details
#request(method, options) ⇒ Object
Makes request with given HTTP method, sets missing parameters, adds signature to request header and returns response object (Net::HTTPResponse)
Parameters:
method
-
HTTP Method symbol, can be :get, :put, :delete
options
-
hash of options
Options:
host
-
hostname to connecto to, optional, defaults to s3.amazonaws.com
path
-
path to send request to, required, throws ArgumentError if not given
body
-
request body, only meaningful for :put request
params
-
parameters to add to query string for request, can be String or Hash
headers
-
Hash of headers fields to add to request header
Returns:
Net::HTTPResponse object – response from remote server
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/stree/connection.rb', line 44 def request(method, ) host = [:host] || HOST path = [:path] or raise ArgumentError.new("no path given") body = [:body] params = [:params] headers = [:headers] if params params = params.is_a?(String) ? params : self.class.parse_params(params) path << "?#{params}" end path = URI.escape(path) request = request_class(method).new(path) headers = self.class.parse_headers(headers) headers.each do |key, value| request[key] = value end request.body = body send_request(host, request) end |