class Truemail::Client::Http

Constants

HEALTHCHECK_ENDPOINT
MIME_TYPE
URI_ATTRS
USER_AGENT
VALIDATION_ENDPOINT

Public Class Methods

new(endpoint = Truemail::Client::Http::VALIDATION_ENDPOINT, **uri_params) click to toggle source
# File lib/truemail/client/http.rb, line 16
def initialize(endpoint = Truemail::Client::Http::VALIDATION_ENDPOINT, **uri_params)
  Truemail::Client::Http::URI_ATTRS[0..2].each do |attribute|
    instance_variable_set(:"@#{attribute}", Truemail::Client.configuration.public_send(attribute))
  end
  @endpoint = endpoint
  @uri_params = uri_params
end

Public Instance Methods

run() click to toggle source
# File lib/truemail/client/http.rb, line 24
def run
  ::Net::HTTP.start(uri.host, uri.port, use_ssl: secure_connection) do |http|
    request = ::Net::HTTP::Get.new(uri)
    request['User-Agent'] = Truemail::Client::Http::USER_AGENT
    request['Accept'] = Truemail::Client::Http::MIME_TYPE
    request['Content-Type'] = Truemail::Client::Http::MIME_TYPE
    unless endpoint.eql?(Truemail::Client::Http::HEALTHCHECK_ENDPOINT)
      request['Authorization'] = Truemail::Client.configuration.token
    end
    http.request(request)
  end.body
rescue => error
  { truemail_client_error: error }.to_json
end

Private Instance Methods

request_uri() click to toggle source
# File lib/truemail/client/http.rb, line 43
def request_uri
  ::URI::HTTP.build(
    path: endpoint,
    query: uri_params.empty? ? nil : ::URI.encode_www_form(uri_params)
  ).request_uri
end
uri() click to toggle source
# File lib/truemail/client/http.rb, line 50
def uri
  @uri ||= URI("#{secure_connection ? 'https' : 'http'}://#{host}:#{port}#{request_uri}")
end