Sha256: 76eec3bd9b8a6d981ca034962edbf66de18b887d77143eda1c7fadaf3be5642c
Contents?: true
Size: 1.97 KB
Versions: 2
Compression:
Stored size: 1.97 KB
Contents
require 'faraday_middleware' class Kapellmeister::Dispatcher def self.inherited(base) super base.extend(Kapellmeister::RequestsExtension) delegate :report, :configuration, :logger, to: base.module_parent end FailedResponse = Struct.new(:success?, :response, :payload) def connection_by(method_name, path, data = {}) additional_headers = data.delete(:headers) || {} requests_data = data.delete(:request) || {} generated_connection = connection(additional_headers: additional_headers, requests_data: requests_data) # rubocop:disable Style/HashSyntax (for support ruby 2.4+) process generated_connection.run_request(method_name.downcase.to_sym, path, data.to_json, additional_headers) rescue NameError, RuntimeError raise "Library can't process method #{method_name} yet" rescue Faraday::ConnectionFailed, Faraday::TimeoutError => e failed_response(details: e.message) end def headers {} end def request_options {} end private def connection(additional_headers:, requests_data:) ::Faraday.new(url: configuration.url, headers: headers_generate(**additional_headers), request: requests_generate(**requests_data)) do |faraday| faraday.request :json, content_type: 'application/json; charset=utf-8' faraday.request :multipart faraday.response :logger, logger faraday.response :json, content_type: 'application/json; charset=utf-8' faraday.adapter :typhoeus do |http| http.timeout = 20 end end end def headers_generate(**additional) { # accept: 'application/json, text/plain, */*, charset=utf-8', **additional, **headers } end def requests_generate(**requests_data) { **requests_data, **request_options } end def process(data) report(data).result end def failed_response(**args) FailedResponse.new(false, { message: "#{self.class} no connection" }, { status: 555, **args }) end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
kapellmeister-0.6.1 | lib/kapellmeister/dispatcher.rb |
kapellmeister-0.6.0 | lib/kapellmeister/dispatcher.rb |