Class: HttpClient

Inherits:
Object
  • Object
show all
Defined in:
lib/hookdeck/http_client.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#configObject (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_connectionObject



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

#connectionObject



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