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) ⇒ 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) ⇒ Request
Build an async HTTP request.
Constructor Details
#initialize(base_url: nil, headers: {}, params: nil, timeout: 30) ⇒ RequestTemplate
Initializes a new RequestTemplate.
35 36 37 38 39 40 |
# File 'lib/patient_http/request_template.rb', line 35 def initialize(base_url: nil, headers: {}, params: nil, timeout: 30) @base_url = base_url @headers = HttpHeaders.new(headers) @params = params @timeout = timeout 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.
110 111 112 |
# File 'lib/patient_http/request_template.rb', line 110 def delete(uri, **kwargs) request(:delete, uri, **kwargs) end |
#get(uri, **kwargs) ⇒ Request
Convenience method for GET requests.
74 75 76 |
# File 'lib/patient_http/request_template.rb', line 74 def get(uri, **kwargs) request(:get, uri, **kwargs) end |
#patch(uri, **kwargs) ⇒ Request
Convenience method for PATCH requests.
101 102 103 |
# File 'lib/patient_http/request_template.rb', line 101 def patch(uri, **kwargs) request(:patch, uri, **kwargs) end |
#post(uri, **kwargs) ⇒ Request
Convenience method for POST requests.
83 84 85 |
# File 'lib/patient_http/request_template.rb', line 83 def post(uri, **kwargs) request(:post, uri, **kwargs) end |
#put(uri, **kwargs) ⇒ Request
Convenience method for PUT requests.
92 93 94 |
# File 'lib/patient_http/request_template.rb', line 92 def put(uri, **kwargs) request(:put, uri, **kwargs) end |
#request(method, uri, body: nil, json: nil, headers: nil, params: nil, timeout: nil) ⇒ Request
Build an async HTTP request. Returns a Request object.
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/patient_http/request_template.rb', line 51 def request(method, uri, body: nil, json: nil, headers: nil, params: nil, timeout: 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 ) end |