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)
148 149 150 |
# File 'lib/aws/s3/connection.rb', line 148 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
78 79 80 |
# File 'lib/aws/s3/connection.rb', line 78 def persistent? [:persistent] end |
#protocol(options = {}) ⇒ Object
82 83 84 85 86 87 88 89 90 91 |
# File 'lib/aws/s3/connection.rb', line 82 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 58 59 60 |
# 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 if [:path]!=nil path = [:path]+path end 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 @http = create_connection attempts == 3 ? raise : (attempts += 1; retry) end |
#subdomain ⇒ Object
74 75 76 |
# File 'lib/aws/s3/connection.rb', line 74 def subdomain http.address[/^([^.]+).#{DEFAULT_HOST}$/, 1] end |
#url_for(path, options = {}) ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/aws/s3/connection.rb', line 62 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 |