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
Class Attribute Summary collapse
Instance Attribute Summary collapse
-
#base_url ⇒ String
readonly
the base url of our api.
-
#headers ⇒ Hash
readonly
the headers being sent in the request.
- #query_params ⇒ Object readonly
Instance Method Summary collapse
-
#get(params: nil) ⇒ 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: 60) ⇒ 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.
57 58 59 60 61 62 63 |
# File 'lib/parliament/request/base_request.rb', line 57 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
165 166 167 |
# File 'lib/parliament/request/base_request.rb', line 165 def base_url @base_url end |
.headers ⇒ Object
165 166 167 |
# File 'lib/parliament/request/base_request.rb', line 165 def headers @headers end |
Instance Attribute Details
#base_url ⇒ String (readonly)
the base url of our api. (expected: example.com - without the trailing slash).
9 10 11 |
# File 'lib/parliament/request/base_request.rb', line 9 def base_url @base_url end |
#headers ⇒ Hash (readonly)
the headers being sent in the request.
9 10 11 |
# File 'lib/parliament/request/base_request.rb', line 9 def headers @headers end |
#query_params ⇒ Object (readonly)
10 11 12 |
# File 'lib/parliament/request/base_request.rb', line 10 def query_params @query_params end |
Instance Method Details
#get(params: nil) ⇒ Parliament::Response::BaseResponse
Makes an HTTP GET request and process results into a response.
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/parliament/request/base_request.rb', line 88 def get(params: nil) @query_params = @query_params.merge(params) unless params.nil? endpoint_uri = URI.parse(query_url) endpoint_uri.query = URI.encode_www_form(@query_params.to_a) unless @query_params.empty? http = Net::HTTP.new(endpoint_uri.host, endpoint_uri.port) http.use_ssl = true if endpoint_uri.scheme == 'https' net_response = http.start do |h| api_request = Net::HTTP::Get.new(endpoint_uri.request_uri) add_headers(api_request) h.request api_request end handle_errors(net_response) build_response(net_response) end |
#post(params: nil, body: nil, timeout: 60) ⇒ Parliament::Response::BaseResponse
Makes an HTTP POST request and process results into a response.
134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
# File 'lib/parliament/request/base_request.rb', line 134 def post(params: nil, body: nil, timeout: 60) @query_params = @query_params.merge(params) unless params.nil? endpoint_uri = URI.parse(query_url) endpoint_uri.query = URI.encode_www_form(@query_params.to_a) unless @query_params.empty? http = Net::HTTP.new(endpoint_uri.host, endpoint_uri.port) http.use_ssl = true if endpoint_uri.scheme == 'https' http.read_timeout = timeout request = Net::HTTP::Post.new( endpoint_uri.request_uri, 'Content-Type' => 'application/json' ) add_headers(request) request.body = body unless body.nil? net_response = http.request(request) handle_errors(net_response) build_response(net_response) end |