Class: Vacuum::Request::Base
- Inherits:
-
Object
- Object
- Vacuum::Request::Base
- Defined in:
- lib/vacuum/request/base.rb
Overview
An Amazon Web Services (AWS) API request.
Direct Known Subclasses
Instance Attribute Summary collapse
-
#endpoint ⇒ Object
readonly
Returns the AWS API Endpoint.
Instance Method Summary collapse
-
#build(hsh) ⇒ Object
Adds given parameters to the request.
-
#build!(hsh = {}) ⇒ Object
Resets the request to the given parameters.
-
#configure {|@endpoint| ... } ⇒ Object
Yields the AWS API Endpoint.
-
#connection ⇒ Object
Returns a Faraday::Connection.
-
#get ⇒ Object
Performs the AWS API request.
-
#get! ⇒ Object
Performs the AWS API request.
-
#initialize(&blk) ⇒ Base
constructor
Creates a new request for given locale and credentials.
-
#parameters ⇒ Object
Returns the Hash parameters of the AWS API request.
-
#url ⇒ Object
Raises a Not Implemented Error.
Constructor Details
#initialize(&blk) ⇒ Base
Creates a new request for given locale and credentials.
Yields the AWS API endpoint if a block is given.
11 12 13 14 15 16 |
# File 'lib/vacuum/request/base.rb', line 11 def initialize(&blk) @parameters = {} @endpoint = Endpoint.const_get(class_basename).new configure &blk if block_given? end |
Instance Attribute Details
#endpoint ⇒ Object (readonly)
Returns the AWS API Endpoint.
6 7 8 |
# File 'lib/vacuum/request/base.rb', line 6 def endpoint @endpoint end |
Instance Method Details
#build(hsh) ⇒ Object
Adds given parameters to the request.
hsh - A Hash of parameter key and value pairs.
Returns self.
23 24 25 26 27 28 29 30 |
# File 'lib/vacuum/request/base.rb', line 23 def build(hsh) hsh.each do |k, v| k = Utils.camelize k.to_s if k.is_a? Symbol @parameters[k] = v.is_a?(Array) ? v.join(',') : v.to_s end self end |
#build!(hsh = {}) ⇒ Object
Resets the request to the given parameters.
hsh - A Hash of parameter key and value pairs.
Returns self.
37 38 39 40 |
# File 'lib/vacuum/request/base.rb', line 37 def build!(hsh = {}) @parameters = {} build hsh end |
#configure {|@endpoint| ... } ⇒ Object
Yields the AWS API Endpoint.
Returns nothing.
45 46 47 |
# File 'lib/vacuum/request/base.rb', line 45 def configure(&blk) yield @endpoint end |
#connection ⇒ Object
Returns a Faraday::Connection.
Yields a Faraday::Builder to configure the connection if a block is given.
53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/vacuum/request/base.rb', line 53 def connection @connection ||= Faraday.new do |builder| builder.use Signature::Authentication, endpoint.secret yield builder if block_given? unless builder.handlers.any? { |h| h.name.include? ':Adapter:' } builder.adapter Faraday.default_adapter end end end |
#get ⇒ Object
Performs the AWS API request.
Returns a Vacuum::Response::Base or a subclass thereof.
68 69 70 71 |
# File 'lib/vacuum/request/base.rb', line 68 def get res = connection.get url Response.const_get(class_basename).new res.body, res.status end |
#get! ⇒ Object
Performs the AWS API request.
Raises a Bad Response if the response is not valid.
Returns a Vacuum::Response::Base or a subclass thereof.
78 79 80 81 82 83 84 |
# File 'lib/vacuum/request/base.rb', line 78 def get! unless (res = get).valid? raise BadResponse, "#{res.code} #{res['Code'].first}" end res end |
#parameters ⇒ Object
Returns the Hash parameters of the AWS API request.
87 88 89 |
# File 'lib/vacuum/request/base.rb', line 87 def parameters default_parameters.merge @parameters end |
#url ⇒ Object
Raises a Not Implemented Error.
When implemented, this should return an Addressable::URI.
94 95 96 |
# File 'lib/vacuum/request/base.rb', line 94 def url raise NotImplementedError end |