Class: Aitch::Request
Instance Attribute Summary collapse
-
#data ⇒ Object
Returns the value of attribute data.
-
#headers ⇒ Object
Returns the value of attribute headers.
-
#options ⇒ Object
Returns the value of attribute options.
-
#redirects ⇒ Object
Returns the value of attribute redirects.
-
#request_method ⇒ Object
Returns the value of attribute request_method.
-
#url ⇒ Object
Returns the value of attribute url.
Instance Method Summary collapse
- #client ⇒ Object
- #content_type ⇒ Object
- #content_type=(content_type) ⇒ Object
- #http_method_class ⇒ Object
-
#initialize(options) ⇒ Request
constructor
A new instance of Request.
- #perform ⇒ Object
- #request ⇒ Object
- #timeout_exception ⇒ Object
- #uri ⇒ Object
Constructor Details
#initialize(options) ⇒ Request
Returns a new instance of Request.
15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/aitch/request.rb', line 15 def initialize() self.headers = {} self. = {} self.redirects = [] @_original_options = .dup.freeze .each do |name, value| public_send("#{name}=", value) end end |
Instance Attribute Details
#data ⇒ Object
Returns the value of attribute data.
7 8 9 |
# File 'lib/aitch/request.rb', line 7 def data @data end |
#headers ⇒ Object
Returns the value of attribute headers.
8 9 10 |
# File 'lib/aitch/request.rb', line 8 def headers @headers end |
#options ⇒ Object
Returns the value of attribute options.
9 10 11 |
# File 'lib/aitch/request.rb', line 9 def @options end |
#redirects ⇒ Object
Returns the value of attribute redirects.
10 11 12 |
# File 'lib/aitch/request.rb', line 10 def redirects @redirects end |
#request_method ⇒ Object
Returns the value of attribute request_method.
5 6 7 |
# File 'lib/aitch/request.rb', line 5 def request_method @request_method end |
#url ⇒ Object
Returns the value of attribute url.
6 7 8 |
# File 'lib/aitch/request.rb', line 6 def url @url end |
Instance Method Details
#client ⇒ Object
56 57 58 59 60 61 62 |
# File 'lib/aitch/request.rb', line 56 def client @client ||= Net::HTTP.new(uri.host, uri.port).tap do |client| set_https(client) set_timeout(client) set_logger(client) end end |
#content_type ⇒ Object
41 42 43 44 |
# File 'lib/aitch/request.rb', line 41 def content_type headers["Content-Type"] || .fetch(:default_headers, {})["Content-Type"] end |
#content_type=(content_type) ⇒ Object
37 38 39 |
# File 'lib/aitch/request.rb', line 37 def content_type=(content_type) headers["Content-Type"] = content_type end |
#http_method_class ⇒ Object
68 69 70 71 72 73 |
# File 'lib/aitch/request.rb', line 68 def http_method_class Net::HTTP.const_get(request_method.to_s.capitalize) rescue NameError raise InvalidHTTPMethodError, "unexpected HTTP verb: #{request_method.inspect}" end |
#perform ⇒ Object
27 28 29 30 31 32 33 34 35 |
# File 'lib/aitch/request.rb', line 27 def perform response = Response.new(, client.request(request)) response.url = url response = follow_redirect(response) validate_response! response response rescue timeout_exception raise RequestTimeoutError end |
#request ⇒ Object
46 47 48 49 50 51 52 53 54 |
# File 'lib/aitch/request.rb', line 46 def request @request ||= http_method_class.new(uri.request_uri).tap do |request| set_body(request) if request.request_body_permitted? set_user_agent(request) set_gzip(request) set_headers(request) set_credentials(request) end end |
#timeout_exception ⇒ Object
127 128 129 |
# File 'lib/aitch/request.rb', line 127 def timeout_exception defined?(Net::ReadTimeout) ? Net::ReadTimeout : Timeout::Error end |