Class: AWS::S3::Connection

Inherits:
Object
  • Object
show all
Defined in:
lib/aws/s3/connection.rb

Overview

:nodoc:

Defined Under Namespace

Modules: Management Classes: Options

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

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 = Options.new(options)
  connect
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args, &block) ⇒ Object (private)



109
110
111
# File 'lib/aws/s3/connection.rb', line 109

def method_missing(method, *args, &block)
  options[method] || super
end

Instance Attribute Details

#access_key_idObject (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

#httpObject (readonly)

Returns the value of attribute http.



15
16
17
# File 'lib/aws/s3/connection.rb', line 15

def http
  @http
end

#optionsObject (readonly)

Returns the value of attribute options.



15
16
17
# File 'lib/aws/s3/connection.rb', line 15

def options
  @options
end

#secret_access_keyObject (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(options = {})
  new(options)
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.utf8?
  URI.escape(path)
end

Instance Method Details

#persistent?Boolean

Returns:

  • (Boolean)


63
64
65
# File 'lib/aws/s3/connection.rb', line 63

def persistent?
  options[:persistent]
end

#protocol(options = {}) ⇒ Object



67
68
69
# File 'lib/aws/s3/connection.rb', line 67

def protocol(options = {})
  (options[:use_ssl] || http.use_ssl?) ? 'https://' : 'http://'
end

#request(verb, path, headers = {}, body = nil, &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
# File 'lib/aws/s3/connection.rb', line 26

def request(verb, path, headers = {}, body = nil, &block)
  requester = Proc.new do 
    path    = self.class.prepare_path(path)
    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                                                           
        request.content_length = body.respond_to?(:lstat) ? body.lstat.size : body.size         
      else                                                                                      
        request.body = body                                                                     
      end                                                                                       
    end
    http.request(request, &block)
  end
  
  if persistent?
    http.start unless http.started?
    requester.call
  else
    http.start(&requester)
  end
end

#subdomainObject



59
60
61
# File 'lib/aws/s3/connection.rb', line 59

def subdomain
  http.address[/^([^.]+).#{DEFAULT_HOST}$/, 1]
end

#url_for(path, options = {}) ⇒ Object



52
53
54
55
56
57
# File 'lib/aws/s3/connection.rb', line 52

def url_for(path, options = {})
  path         = self.class.prepare_path(path)
  request      = request_method(:get).new(path, {})
  query_string = query_string_authentication(request, options)
  "#{protocol(options)}#{http.address}#{path}?#{query_string}"
end