class HornOfPlenty::Adapters::Github::Client
Constants
- RETRY_BACKOFF_MULTIPLIER
Attributes
logger[RW]
token[RW]
url[RW]
version[RW]
Public Class Methods
configuration()
click to toggle source
# File lib/horn_of_plenty/adapters/github/client.rb, line 58 def self.configuration Github::Configuration.instance end
new(url: configuration.base_url, version: configuration.api_version, token: configuration.token, logger: configuration.logger)
click to toggle source
# File lib/horn_of_plenty/adapters/github/client.rb, line 23 def initialize(url: configuration.base_url, version: configuration.api_version, token: configuration.token, logger: configuration.logger) self.url = url self.version = version self.token = token self.logger = logger end
pool()
click to toggle source
rubocop:enable Metrics/LineLength
# File lib/horn_of_plenty/adapters/github/client.rb, line 54 def self.pool @pool ||= ConnectionPool::Wrapper.new(size: 7, timeout: 20) { new } end
Public Instance Methods
request(request, retries = 3, _retry_delay_in_ms = 1000)
click to toggle source
rubocop:disable Metrics/LineLength
# File lib/horn_of_plenty/adapters/github/client.rb, line 35 def request(request, retries = 3, _retry_delay_in_ms = 1000) broadcast(:horn_of_plenty_request_sent, request.class.name, request.method, request.path, request.to_h, url, retries) response = connection.public_send(request.method, request.path, request.to_h) broadcast(:horn_of_plenty_response_received, response.class.name, request.method, request.path, response.body, url) request.response_class.parse(response) rescue Github::Errors => exception retries -= 1 broadcast(:horn_of_plenty_request_retried, exception, retries) retry if retries.positive? raise exception end
Private Instance Methods
configuration()
click to toggle source
# File lib/horn_of_plenty/adapters/github/client.rb, line 64 def configuration @configuration ||= self.class.configuration end
connection()
click to toggle source
# File lib/horn_of_plenty/adapters/github/client.rb, line 68 def connection @connection ||= Faraday.new(url: url) do |conn| conn.response :follow_redirects conn.adapter :net_http conn.headers['Accept'] = "application/vnd.github.#{version}+json" conn.headers['User-Agent'] = 'Horn-Of-Plenty-Gem' conn.headers['Authorization'] = "Token #{token}" end end