Class: AWS::S3::Connection
- Inherits:
-
Object
- Object
- AWS::S3::Connection
- Defined in:
- lib/aws/s3/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, headers = {}, body = nil, attempts = 0, &block) ⇒ Object
- #subdomain ⇒ Object
- #url_for(path, options = {}) ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ Connection
Creates a new connection. Connections make the actual requests to S3, though these requests are usually called from subclasses of Base.
For details on establishing connections, check the Connection::Management::ClassMethods.
21 22 23 24 |
# File 'lib/aws/s3/connection.rb', line 21 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)
162 163 164 |
# File 'lib/aws/s3/connection.rb', line 162 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.
15 16 17 |
# File 'lib/aws/s3/connection.rb', line 15 def access_key_id @access_key_id end |
#http ⇒ Object (readonly)
Returns the value of attribute http.
15 16 17 |
# File 'lib/aws/s3/connection.rb', line 15 def http @http end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
15 16 17 |
# File 'lib/aws/s3/connection.rb', line 15 def @options end |
#secret_access_key ⇒ Object (readonly)
Returns the value of attribute secret_access_key.
15 16 17 |
# File 'lib/aws/s3/connection.rb', line 15 def secret_access_key @secret_access_key end |
Class Method Details
.connect(options = {}) ⇒ Object
5 6 7 |
# File 'lib/aws/s3/connection.rb', line 5 def connect( = {}) new() end |
.prepare_path(path) ⇒ Object
9 10 11 12 |
# File 'lib/aws/s3/connection.rb', line 9 def prepare_path(path) path = path.remove_extended unless path.valid_utf8? URI.escape(path) end |
Instance Method Details
#persistent? ⇒ Boolean
76 77 78 |
# File 'lib/aws/s3/connection.rb', line 76 def persistent? [:persistent] end |
#protocol(options = {}) ⇒ Object
80 81 82 83 84 85 86 87 88 89 |
# File 'lib/aws/s3/connection.rb', line 80 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, headers = {}, body = nil, attempts = 0, &block) ⇒ Object
26 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 |
# File 'lib/aws/s3/connection.rb', line 26 def request(verb, path, 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 request = request_method(verb).new(path, headers) ensure_content_type!(request) add_user_agent!(request) authenticate!(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, Errno::ECONNRESET @http = create_connection attempts == 3 ? raise : (attempts += 1; retry) end |
#subdomain ⇒ Object
72 73 74 |
# File 'lib/aws/s3/connection.rb', line 72 def subdomain http.address[/^([^.]+).#{DEFAULT_HOST}$/, 1] end |
#url_for(path, options = {}) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/aws/s3/connection.rb', line 59 def url_for(path, = {}) authenticate = .delete(:authenticated) # Default to true unless explicitly false authenticate = true if authenticate.nil? path = self.class.prepare_path(path) request = request_method(:get).new(path, {}) query_segments = permissible_request_parameters() query_segments << query_string_authentication(request, ) if authenticate url = "#{protocol()}#{http.address}#{port_string}#{path}" url << (url['?'] ? '&' : '?') << query_segments.join('&') unless query_segments.empty? url end |