Sha256: eb09995226b5c394b0200777b52d6f4b741fcdd36806207d8a7c0e424e0f2253

Contents?: true

Size: 1.24 KB

Versions: 2

Compression:

Stored size: 1.24 KB

Contents

# frozen_string_literal: true

module Truemail
  module Client
    class Http
      require 'uri'
      require 'net/http'

      URI_ATTRS = %i[secure_connection host port email].freeze
      USER_AGENT = 'Truemail Ruby client'
      MIME_TYPE = 'application/json'

      def initialize(email)
        Truemail::Client::Http::URI_ATTRS[0..-2].each do |attribute|
          instance_variable_set(:"@#{attribute}", Truemail::Client.configuration.public_send(attribute))
        end
        @email = email
      end

      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
          request['Authorization'] = Truemail::Client.configuration.token
          http.request(request)
        end.body
      rescue => error
        { truemail_client_error: error }.to_json
      end

      private

      attr_reader(*Truemail::Client::Http::URI_ATTRS)

      def uri
        @uri ||= URI("#{secure_connection ? 'https' : 'http'}://#{host}:#{port}/?email=#{email}")
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
truemail-client-0.1.1 lib/truemail/client/http.rb
truemail-client-0.1.0 lib/truemail/client/http.rb