class Mailinabox::Api::Client
Attributes
configuration[RW]
connection[RW]
Public Class Methods
new(configuration: ::Mailinabox::Api.configuration)
click to toggle source
# File lib/mailinabox/api/client.rb, line 7 def initialize(configuration: ::Mailinabox::Api.configuration) self.configuration = configuration self.init_connection end
Public Instance Methods
evaluate_response(method, response)
click to toggle source
# File lib/mailinabox/api/client.rb, line 62 def evaluate_response(method, response) response&.to_s&.strip&.downcase&.eql?(Mailinabox::Api::Constants::RESPONSES[method]) end
get(path, params: {}, headers: {}, options: {})
click to toggle source
# File lib/mailinabox/api/client.rb, line 29 def get(path, params: {}, headers: {}, options: {}) request path, method: :get, params: params, headers: headers, options: options end
init_connection(headers: {}, options: {})
click to toggle source
# File lib/mailinabox/api/client.rb, line 14 def init_connection(headers: {}, options: {}) headers["User-Agent"] = options.fetch(:user_agent, self.configuration.faraday.fetch(:user_agent, nil)) self.connection ||= ::Faraday.new(url: self.configuration.host) do |builder| builder.headers = headers builder.basic_auth(self.configuration.user, self.configuration.password) builder.request :url_encoded builder.response :logger if self.configuration.verbose_faraday? builder.adapter self.configuration.faraday.fetch(:adapter, :net_http) end end
post(path, params: {}, data: {}, headers: {}, options: {})
click to toggle source
# File lib/mailinabox/api/client.rb, line 33 def post(path, params: {}, data: {}, headers: {}, options: {}) request path, method: :post, params: params, data: data, headers: headers, options: options end
request(path, method: :get, params: {}, data: {}, headers: {}, options: {}, retries: 3)
click to toggle source
# File lib/mailinabox/api/client.rb, line 37 def request(path, method: :get, params: {}, data: {}, headers: {}, options: {}, retries: 3) response = nil begin response = case method when :get, :head, :options self.connection.send(method) do |request| request.url path request.params = params if params && !params.empty? end when :post, :put, :patch, :delete self.connection.send(method) do |request| request.url path request.body = data if data && !data.empty? request.params = params if params && !params.empty? end end rescue Faraday::TimeoutError, Faraday::ConnectionFailed => e retries -= 1 retry if retries > 0 end return response&.body end