Sha256: 870b4342b8ada33083a9e94e22c8aad588f3df0351e98ddcd597e09e7036010c
Contents?: true
Size: 1.41 KB
Versions: 3
Compression:
Stored size: 1.41 KB
Contents
require_relative "preconditions" require_relative "result" require_relative "errors" module Freno class Client class Request include Freno::Client::Preconditions attr_reader :faraday, :args, :options attr_reader :raise_on_timeout def self.perform(**kwargs) new(kwargs).perform end def initialize(**kwargs) @args = kwargs @faraday = kwargs.delete(:faraday) || nil @options = kwargs.delete(:options) || Hash.new @raise_on_timeout = options.fetch(:raise_on_timeout, true) @verb = options.fetch(:verb, :head) end def perform response = request(verb, path) process_response(response) rescue Faraday::TimeoutError => ex raise Freno::Error.new(ex) if raise_on_timeout Result.from_meaning(:request_timeout) rescue => ex raise Freno::Error.new(ex) end protected def request(verb, path) faraday.send(verb, path) end def path @path || begin raise NotImplementedError("must be overriden in specific requests, or memoized in @path") end end def verb @verb || begin raise NotImplementedError("must be overriden in specific requests, or memoized in @verb") end end def process_response(response) Result.from_faraday_response(response) end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
freno-client-0.7.0 | lib/freno/client/request.rb |
freno-client-0.6.0 | lib/freno/client/request.rb |
freno-client-0.4.0 | lib/freno/client/request.rb |