lib/moneta/front/service.rb
require 'moneta/api/options'
module Moneta
module Front
class Service
DEMO = Moneta::Constants::Settings::DEMO
PRODUCTION = Moneta::Constants::Settings::PRODUCTION
PATH = Moneta::Constants::Settings::CERTIFICATE_PATH
include ServiceMethods
def initialize(certificate, key, params = {})
@certificate = certificate
@key = key
@connection = connection(Moneta::Api::Options.new(params))
end
def request(url)
@connection.get(url)
end
private
def connection(options)
Faraday.new(url: endpoint(options.demo?), ssl: ssl_options) do |faraday|
faraday.use ::FaradayMiddleware::FollowRedirects, limit: 10
if options.logger
faraday.response :logger, options.logger, bodies: options.log_bodies? do |logger|
options.filter.each do |subject, replacement|
logger.filter(/#{ subject }/, replacement)
end
end
end
faraday.adapter :net_http do |http|
http.open_timeout = options.open_timeout
end
end
end
def endpoint(demo)
(demo ? DEMO : PRODUCTION) + PATH
end
def ssl_options
{ client_cert: @certificate, client_key: @key, verify: false }
end
end
end
end