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 ⇒ Hash
readonly
any query parameters to be sent in the request.
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 setting the headers on the class, or passing headers in.
63 64 65 66 67 68 69 |
# File 'lib/parliament/request/base_request.rb', line 63 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
172 173 174 |
# File 'lib/parliament/request/base_request.rb', line 172 def base_url @base_url end |
.headers ⇒ Object
172 173 174 |
# File 'lib/parliament/request/base_request.rb', line 172 def headers @headers end |
Instance Attribute Details
#base_url ⇒ String (readonly)
the base url of our api. (eg: example.com - without the trailing slash).
12 13 14 |
# File 'lib/parliament/request/base_request.rb', line 12 def base_url @base_url end |
#query_params ⇒ Hash (readonly)
any query parameters to be sent in the request.
12 13 14 |
# File 'lib/parliament/request/base_request.rb', line 12 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.
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/parliament/request/base_request.rb', line 96 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.
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 |
# File 'lib/parliament/request/base_request.rb', line 144 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 |