Class: Aliyun::ESS::Connection
- Inherits:
-
Object
- Object
- Aliyun::ESS::Connection
- Defined in:
- lib/aliyun/ess/connection.rb
Overview
:nodoc:
Defined Under Namespace
Modules: Management Classes: Options
Instance Attribute Summary collapse
-
#access_key_id ⇒ Object
readonly
Returns the value of attribute access_key_id.
-
#http ⇒ Object
readonly
Returns the value of attribute http.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
-
#secret_access_key ⇒ Object
readonly
Returns the value of attribute secret_access_key.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(options = {}) ⇒ Connection
constructor
Creates a new connection.
- #persistent? ⇒ Boolean
- #protocol(options = {}) ⇒ Object
- #request(verb, path, params = {}, headers = {}, body = nil, attempts = 0, &block) ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ Connection
Creates a new connection. Connections make the actual requests to OSS, though these requests are usually called from subclasses of Base.
For details on establishing connections, check the Connection::Management::ClassMethods.
22 23 24 25 |
# File 'lib/aliyun/ess/connection.rb', line 22 def initialize( = {}) @options = Options.new() connect end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args, &block) ⇒ Object (private)
119 120 121 |
# File 'lib/aliyun/ess/connection.rb', line 119 def method_missing(method, *args, &block) [method] || super end |
Instance Attribute Details
#access_key_id ⇒ Object (readonly)
Returns the value of attribute access_key_id.
16 17 18 |
# File 'lib/aliyun/ess/connection.rb', line 16 def access_key_id @access_key_id end |
#http ⇒ Object (readonly)
Returns the value of attribute http.
16 17 18 |
# File 'lib/aliyun/ess/connection.rb', line 16 def http @http end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
16 17 18 |
# File 'lib/aliyun/ess/connection.rb', line 16 def @options end |
#secret_access_key ⇒ Object (readonly)
Returns the value of attribute secret_access_key.
16 17 18 |
# File 'lib/aliyun/ess/connection.rb', line 16 def secret_access_key @secret_access_key end |
Class Method Details
.connect(options = {}) ⇒ Object
6 7 8 |
# File 'lib/aliyun/ess/connection.rb', line 6 def connect( = {}) new() end |
.prepare_path(path) ⇒ Object
10 11 12 13 |
# File 'lib/aliyun/ess/connection.rb', line 10 def prepare_path(path) path = path.remove_extended unless path.valid_utf8? URI.escape(path) end |
Instance Method Details
#persistent? ⇒ Boolean
65 66 67 |
# File 'lib/aliyun/ess/connection.rb', line 65 def persistent? [:persistent] end |
#protocol(options = {}) ⇒ Object
69 70 71 72 73 74 75 76 77 78 |
# File 'lib/aliyun/ess/connection.rb', line 69 def protocol( = {}) # This always trumps http.use_ssl? if [:use_ssl] == false 'http://' elsif [:use_ssl] || http.use_ssl? 'https://' else 'http://' end end |
#request(verb, path, params = {}, headers = {}, body = nil, attempts = 0, &block) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/aliyun/ess/connection.rb', line 27 def request(verb, path, params = {}, headers = {}, body = nil, attempts = 0, &block) body.rewind if body.respond_to?(:rewind) unless attempts.zero? requester = Proc.new do path = self.class.prepare_path(path) if attempts.zero? # Only escape the path once params = ::Rack::Utils.parse_nested_query(URI(path).query).merge(params) request_uri = "/?"+query_string_authentication(params) # puts request_uri request = request_method(verb).new(request_uri, headers) add_user_agent!(request) if body if body.respond_to?(:read) request.body_stream = body else request.body = body end request.content_length = body.respond_to?(:lstat) ? body.stat.size : body.size else request.content_length = 0 end http.request(request, &block) end if persistent? http.start unless http.started? requester.call else http.start(&requester) end rescue Errno::EPIPE, Timeout::Error, Errno::EINVAL, EOFError @http = create_connection attempts == 3 ? raise : (attempts += 1; retry) end |