Class: Parliament::Request::BaseRequest
- Inherits:
-
Object
- Object
- Parliament::Request::BaseRequest
- Defined in:
- lib/parliament/request/base_request.rb
Overview
Base request object, allowing the user to make a request to an API.
Direct Known Subclasses
Constant Summary collapse
- TIMEOUT =
40.freeze
- CONNECTTIMEOUT =
5.freeze
Class Attribute Summary collapse
Instance Attribute Summary collapse
-
#base_url ⇒ String
readonly
the base url of our api.
- #query_params ⇒ Object readonly
Instance Method Summary collapse
-
#get(params: nil, timeout: TIMEOUT, connecttimeout: CONNECTTIMEOUT) ⇒ Parliament::Response::BaseResponse
Makes an HTTP GET request and process results into a response.
-
#initialize(base_url: nil, headers: nil, builder: nil, decorators: nil) ⇒ BaseRequest
constructor
Creates a new instance of Parliament::Request::BaseRequest.
-
#post(params: nil, body: nil, timeout: TIMEOUT, connecttimeout: CONNECTTIMEOUT) ⇒ Parliament::Response::BaseResponse
Makes an HTTP POST request and process results into a response.
Constructor Details
#initialize(base_url: nil, headers: nil, builder: nil, decorators: nil) ⇒ BaseRequest
Creates a new instance of Parliament::Request::BaseRequest.
An interesting note for #initialize is that setting base_url on the class, or using the environment variable PARLIAMENT_BASE_URL means you don’t need to pass in a base_url. You can pass one anyway to override the environment variable or class parameter. Similarly, headers can be set by either settings the headers on the class, or passing headers in.
62 63 64 65 66 67 68 |
# File 'lib/parliament/request/base_request.rb', line 62 def initialize(base_url: nil, headers: nil, builder: nil, decorators: nil) @base_url = base_url || self.class.base_url @headers = headers || self.class.headers || {} @builder = builder || Parliament::Builder::BaseResponseBuilder @decorators = decorators @query_params = {} end |
Class Attribute Details
.base_url ⇒ Object
168 169 170 |
# File 'lib/parliament/request/base_request.rb', line 168 def base_url @base_url end |
.headers ⇒ Object
168 169 170 |
# File 'lib/parliament/request/base_request.rb', line 168 def headers @headers end |
Instance Attribute Details
#base_url ⇒ String (readonly)
the base url of our api. (expected: example.com - without the trailing slash).
11 12 13 |
# File 'lib/parliament/request/base_request.rb', line 11 def base_url @base_url end |
#query_params ⇒ Object (readonly)
15 16 17 |
# File 'lib/parliament/request/base_request.rb', line 15 def query_params @query_params end |
Instance Method Details
#get(params: nil, timeout: TIMEOUT, connecttimeout: CONNECTTIMEOUT) ⇒ Parliament::Response::BaseResponse
Makes an HTTP GET request and process results into a response.
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/parliament/request/base_request.rb', line 93 def get(params: nil, timeout: TIMEOUT, connecttimeout: CONNECTTIMEOUT) Typhoeus::Config.user_agent = 'Ruby' uri_hash = separate_uri(query_url, @query_params, params) typhoeus_request = Typhoeus::Request.new( uri_hash[:endpoint], method: :get, params: uri_hash[:params], headers: headers, timeout: timeout, connecttimeout: connecttimeout, accept_encoding: 'gzip' ) response = typhoeus_request.run handle_errors(response) build_response(response) end |
#post(params: nil, body: nil, timeout: TIMEOUT, connecttimeout: CONNECTTIMEOUT) ⇒ Parliament::Response::BaseResponse
Makes an HTTP POST request and process results into a response.
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 |
# File 'lib/parliament/request/base_request.rb', line 140 def post(params: nil, body: nil, timeout: TIMEOUT, connecttimeout: CONNECTTIMEOUT) Typhoeus::Config.user_agent = 'Ruby' uri_hash = separate_uri(query_url, @query_params, params) typhoeus_request = Typhoeus::Request.new( uri_hash[:endpoint], method: :post, params: uri_hash[:params], headers: headers.merge({ 'Content-Type' => 'application/json' }), accept_encoding: 'gzip', timeout: timeout, connecttimeout: connecttimeout, body: body ) response = typhoeus_request.run handle_errors(response) build_response(response) end |