Class: HttpClient
- Inherits:
-
Object
- Object
- HttpClient
- Defined in:
- lib/hookdeck/http_client.rb
Instance Attribute Summary collapse
-
#config ⇒ Object
readonly
Returns the value of attribute config.
Instance Method Summary collapse
- #build_connection ⇒ Object
- #connection ⇒ Object
-
#initialize(config) ⇒ HttpClient
constructor
A new instance of HttpClient.
- #setup_error_handling(faraday) ⇒ Object
- #setup_request_middleware(faraday) ⇒ Object
- #setup_response_middleware(faraday) ⇒ Object
Constructor Details
#initialize(config) ⇒ HttpClient
Returns a new instance of HttpClient.
4 5 6 7 |
# File 'lib/hookdeck/http_client.rb', line 4 def initialize(config) @config = config @connection_pools = {} end |
Instance Attribute Details
#config ⇒ Object (readonly)
Returns the value of attribute config.
2 3 4 |
# File 'lib/hookdeck/http_client.rb', line 2 def config @config end |
Instance Method Details
#build_connection ⇒ Object
13 14 15 16 17 18 19 20 |
# File 'lib/hookdeck/http_client.rb', line 13 def build_connection Faraday.new(url: config.api_base) do |faraday| setup_request_middleware(faraday) setup_response_middleware(faraday) setup_error_handling(faraday) faraday.adapter :net_http end end |
#connection ⇒ Object
9 10 11 |
# File 'lib/hookdeck/http_client.rb', line 9 def connection Thread.current[:hookdeck_client] ||= build_connection end |
#setup_error_handling(faraday) ⇒ Object
36 37 38 |
# File 'lib/hookdeck/http_client.rb', line 36 def setup_error_handling(faraday) # faraday.use Middleware::ErrorHandler end |
#setup_request_middleware(faraday) ⇒ Object
22 23 24 25 26 27 28 29 |
# File 'lib/hookdeck/http_client.rb', line 22 def setup_request_middleware(faraday) faraday.request :json # faraday.request :retry, max: config.max_retries, interval: config.retry_interval faraday.request :authorization, 'Bearer', config.api_key # faraday.use Middleware::RequestId, prefix: config.request_id_prefix # faraday.use Middleware::Logging, logger: config.logger end |
#setup_response_middleware(faraday) ⇒ Object
31 32 33 34 |
# File 'lib/hookdeck/http_client.rb', line 31 def setup_response_middleware(faraday) faraday.response :json, content_type: /\bjson$/ # faraday.response :logger, config.logger, bodies: true if config.logger end |