Sha256: ee98ac0bdfaa4d52d145a2a51a2d1f8308b8011028a5e578249ee2564d58177f

Contents?: true

Size: 1.31 KB

Versions: 3

Compression:

Stored size: 1.31 KB

Contents

# frozen_string_literal: true

require_relative '../truemail/client/version'
require_relative '../truemail/client/configuration'
require_relative '../truemail/client/http'

module Truemail
  module Client
    INCOMPLETE_CONFIG = 'required args not passed'
    NOT_CONFIGURED = 'use Truemail::Client.configure before'

    class << self
      def configuration(&block)
        @configuration ||= begin
          return unless block_given?
          configuration = Truemail::Client::Configuration.new(&block)
          raise_unless(configuration.complete?, Truemail::Client::INCOMPLETE_CONFIG)
          configuration
        end
      end

      def configure(&block)
        configuration(&block)
      end

      def reset_configuration!
        @configuration = nil
      end

      def validate(email)
        raise_unless(Truemail::Client.configuration, Truemail::Client::NOT_CONFIGURED)
        Truemail::Client::Http.new(email: email).run
      end

      def server_healthy?
        raise_unless(Truemail::Client.configuration, Truemail::Client::NOT_CONFIGURED)
        Truemail::Client::Http.new(Truemail::Client::Http::HEALTHCHECK_ENDPOINT).run.empty?
      end

      private

      def raise_unless(condition, message)
        raise Truemail::Client::Configuration::Error, message unless condition
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
truemail-client-0.3.0 lib/truemail/client.rb
truemail-client-0.2.1 lib/truemail/client.rb
truemail-client-0.2.0 lib/truemail/client.rb