class S3::Service
Attributes
Public Class Methods
Creates new service.
Options¶ ↑
-
:access_key_id
- Access key id (REQUIRED) -
:secret_access_key
- Secret access key (REQUIRED) -
:use_ssl
- Use https or http protocol (false by default) -
:use_vhost
- Use bucket.s3.amazonaws.com or s3.amazonaws.com/bucket (true by default) -
:debug
- Display debug information on the STDOUT (false by default) -
:timeout
- Timeout to use by the Net::HTTP object (60 by default)
# File lib/s3/service.rb, line 27 def initialize(options) # The keys for these required options might exist in the options hash, but # they might be set to something like `nil`. If this is the case, we want # to fail early. raise ArgumentError, "Missing :access_key_id." if !options[:access_key_id] raise ArgumentError, "Missing :secret_access_key." if !options[:secret_access_key] @access_key_id = options.fetch(:access_key_id) @secret_access_key = options.fetch(:secret_access_key) @use_ssl = options.fetch(:use_ssl, false) @use_vhost = options.fetch(:use_vhost, true) @timeout = options.fetch(:timeout, 60) @debug = options.fetch(:debug, false) raise ArgumentError, "Missing proxy settings. Must specify at least :host." if options[:proxy] && !options[:proxy][:host] @proxy = options.fetch(:proxy, nil) end
Public Instance Methods
Compares service to other, by access_key_id
and secret_access_key
# File lib/s3/service.rb, line 10 def ==(other) self.access_key_id == other.access_key_id and self.secret_access_key == other.secret_access_key end
Returns the bucket with the given name. Does not check whether the bucket exists. But also does not issue any HTTP requests, so it's much faster than buckets.find
# File lib/s3/service.rb, line 54 def bucket(name) Bucket.send(:new, self, name) end
Returns all buckets in the service and caches the result (see reload
)
# File lib/s3/service.rb, line 47 def buckets Proxy.new(lambda { list_all_my_buckets }, :owner => self, :extend => BucketsExtension) end
Returns a custom port, 443 or 80, depends on :use_ssl
value from initializer
# File lib/s3/service.rb, line 66 def port S3.port || (use_ssl ? 443 : 80) end
Returns “http://” or “https://”, depends on :use_ssl
value from initializer
# File lib/s3/service.rb, line 60 def protocol use_ssl ? "https://" : "http://" end
Private Instance Methods
# File lib/s3/service.rb, line 86 def connection return @connection if defined?(@connection) @connection = Connection.new(:access_key_id => @access_key_id, :secret_access_key => @secret_access_key, :use_ssl => @use_ssl, :timeout => @timeout, :debug => @debug, :proxy => @proxy) end
# File lib/s3/service.rb, line 76 def list_all_my_buckets response = service_request(:get) names = parse_list_all_my_buckets_result(response.body) names.map { |name| Bucket.send(:new, self, name) } end
# File lib/s3/service.rb, line 82 def service_request(method, options = {}) connection.request(method, options.merge(:path => "/#{options[:path]}")) end