Class: PatientHttp::RequestTemplate
- Inherits:
-
Object
- Object
- PatientHttp::RequestTemplate
- Defined in:
- lib/patient_http/request_template.rb
Overview
The RequestTemplate is used to build HTTP requests with shared configuration.
Use RequestTemplate when you need to make multiple requests to the same API with shared configuration (base URL, headers, timeout).
The RequestTemplate handles building HTTP requests with proper URL joining, header merging, and parameter encoding.
Instance Attribute Summary collapse
-
#base_url ⇒ String, ...
Base URL for relative URIs.
-
#headers ⇒ HttpHeaders
Default headers for all requests.
-
#timeout ⇒ Float
Default request timeout in seconds.
Instance Method Summary collapse
-
#delete(uri, **kwargs) ⇒ Request
Convenience method for DELETE requests.
-
#get(uri, **kwargs) ⇒ Request
Convenience method for GET requests.
-
#initialize(base_url: nil, headers: {}, params: nil, timeout: 30, preprocessors: nil) ⇒ RequestTemplate
constructor
Initializes a new RequestTemplate.
-
#patch(uri, **kwargs) ⇒ Request
Convenience method for PATCH requests.
-
#post(uri, **kwargs) ⇒ Request
Convenience method for POST requests.
-
#put(uri, **kwargs) ⇒ Request
Convenience method for PUT requests.
-
#request(method, uri, body: nil, json: nil, headers: nil, params: nil, timeout: nil, preprocessors: nil) ⇒ Request
Build an async HTTP request.
Constructor Details
#initialize(base_url: nil, headers: {}, params: nil, timeout: 30, preprocessors: nil) ⇒ RequestTemplate
Initializes a new RequestTemplate.
37 38 39 40 41 42 43 |
# File 'lib/patient_http/request_template.rb', line 37 def initialize(base_url: nil, headers: {}, params: nil, timeout: 30, preprocessors: nil) @base_url = base_url @headers = HttpHeaders.new(headers) @params = params @timeout = timeout @preprocessors = preprocessors end |
Instance Attribute Details
#base_url ⇒ String, ...
Returns Base URL for relative URIs.
21 22 23 |
# File 'lib/patient_http/request_template.rb', line 21 def base_url @base_url end |
#headers ⇒ HttpHeaders
Returns Default headers for all requests.
24 25 26 |
# File 'lib/patient_http/request_template.rb', line 24 def headers @headers end |
#timeout ⇒ Float
Returns Default request timeout in seconds.
27 28 29 |
# File 'lib/patient_http/request_template.rb', line 27 def timeout @timeout end |
Instance Method Details
#delete(uri, **kwargs) ⇒ Request
Convenience method for DELETE requests.
116 117 118 |
# File 'lib/patient_http/request_template.rb', line 116 def delete(uri, **kwargs) request(:delete, uri, **kwargs) end |
#get(uri, **kwargs) ⇒ Request
Convenience method for GET requests.
80 81 82 |
# File 'lib/patient_http/request_template.rb', line 80 def get(uri, **kwargs) request(:get, uri, **kwargs) end |
#patch(uri, **kwargs) ⇒ Request
Convenience method for PATCH requests.
107 108 109 |
# File 'lib/patient_http/request_template.rb', line 107 def patch(uri, **kwargs) request(:patch, uri, **kwargs) end |
#post(uri, **kwargs) ⇒ Request
Convenience method for POST requests.
89 90 91 |
# File 'lib/patient_http/request_template.rb', line 89 def post(uri, **kwargs) request(:post, uri, **kwargs) end |
#put(uri, **kwargs) ⇒ Request
Convenience method for PUT requests.
98 99 100 |
# File 'lib/patient_http/request_template.rb', line 98 def put(uri, **kwargs) request(:put, uri, **kwargs) end |
#request(method, uri, body: nil, json: nil, headers: nil, params: nil, timeout: nil, preprocessors: nil) ⇒ Request
Build an async HTTP request. Returns a Request object.
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/patient_http/request_template.rb', line 56 def request(method, uri, body: nil, json: nil, headers: nil, params: nil, timeout: nil, preprocessors: nil) full_uri = @base_url ? URI.join(@base_url, uri.to_s) : URI(uri) merged_headers = headers&.any? ? @headers.merge(headers) : @headers merged_params = @params ? (@params.merge(params || {})) : params # Create request with all parameters Request.new( method, full_uri.to_s, headers: merged_headers.to_h, body: body, json: json, params: merged_params, timeout: timeout || @timeout, preprocessors: preprocessors || @preprocessors ) end |