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, processor: 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, processor: nil) ⇒ Request
Build an async HTTP request.
Constructor Details
#initialize(base_url: nil, headers: {}, params: nil, timeout: 30, preprocessors: nil, processor: nil) ⇒ RequestTemplate
Initializes a new RequestTemplate.
38 39 40 41 42 43 44 45 |
# File 'lib/patient_http/request_template.rb', line 38 def initialize(base_url: nil, headers: {}, params: nil, timeout: 30, preprocessors: nil, processor: nil) @base_url = base_url @headers = HttpHeaders.new(headers) @params = params @timeout = timeout @preprocessors = preprocessors @processor = processor 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.
121 122 123 |
# File 'lib/patient_http/request_template.rb', line 121 def delete(uri, **kwargs) request(:delete, uri, **kwargs) end |
#get(uri, **kwargs) ⇒ Request
Convenience method for GET requests.
85 86 87 |
# File 'lib/patient_http/request_template.rb', line 85 def get(uri, **kwargs) request(:get, uri, **kwargs) end |
#patch(uri, **kwargs) ⇒ Request
Convenience method for PATCH requests.
112 113 114 |
# File 'lib/patient_http/request_template.rb', line 112 def patch(uri, **kwargs) request(:patch, uri, **kwargs) end |
#post(uri, **kwargs) ⇒ Request
Convenience method for POST requests.
94 95 96 |
# File 'lib/patient_http/request_template.rb', line 94 def post(uri, **kwargs) request(:post, uri, **kwargs) end |
#put(uri, **kwargs) ⇒ Request
Convenience method for PUT requests.
103 104 105 |
# File 'lib/patient_http/request_template.rb', line 103 def put(uri, **kwargs) request(:put, uri, **kwargs) end |
#request(method, uri, body: nil, json: nil, headers: nil, params: nil, timeout: nil, preprocessors: nil, processor: nil) ⇒ Request
Build an async HTTP request. Returns a Request object.
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/patient_http/request_template.rb', line 60 def request(method, uri, body: nil, json: nil, headers: nil, params: nil, timeout: nil, preprocessors: nil, processor: 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, processor: processor || @processor ) end |