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.
23 24 25 26 |
# File 'lib/aws/s3/connection.rb', line 23 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)
147 148 149 |
# File 'lib/aws/s3/connection.rb', line 147 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.
17 18 19 |
# File 'lib/aws/s3/connection.rb', line 17 def access_key_id @access_key_id end |
#http ⇒ Object (readonly)
Returns the value of attribute http.
17 18 19 |
# File 'lib/aws/s3/connection.rb', line 17 def http @http end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
17 18 19 |
# File 'lib/aws/s3/connection.rb', line 17 def @options end |
#secret_access_key ⇒ Object (readonly)
Returns the value of attribute secret_access_key.
17 18 19 |
# File 'lib/aws/s3/connection.rb', line 17 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 13 14 |
# File 'lib/aws/s3/connection.rb', line 9 def prepare_path(path) path = path.remove_extended unless path.valid_utf8? # Escape square brackets and single quotes URI.escape(path).gsub(/[\[\]']/) { |m| "%%%02x" % m[0] } end |
Instance Method Details
#persistent? ⇒ Boolean
77 78 79 |
# File 'lib/aws/s3/connection.rb', line 77 def persistent? [:persistent] end |
#protocol(options = {}) ⇒ Object
81 82 83 84 85 86 87 88 89 90 |
# File 'lib/aws/s3/connection.rb', line 81 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
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 |
# File 'lib/aws/s3/connection.rb', line 28 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, SocketError @http = create_connection attempts == 3 ? raise : (attempts += 1; retry) end |
#subdomain ⇒ Object
73 74 75 |
# File 'lib/aws/s3/connection.rb', line 73 def subdomain http.address[/^([^.]+).#{DEFAULT_HOST}$/, 1] end |
#url_for(path, options = {}) ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/aws/s3/connection.rb', line 61 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_string = query_string_authentication(request, ) returning "#{protocol()}#{http.address}#{port_string}#{path}" do |url| url << "?#{query_string}" if authenticate end end |