Sha256: c1099634121f322431fcbaa49742ece660fe45c0e0540c10d28b69b262836561

Contents?: true

Size: 1.21 KB

Versions: 8

Compression:

Stored size: 1.21 KB

Contents

# frozen_string_literal: true

module Truemail
  module Client
    class Configuration
      DEFAULT_PORT = 9292

      Error = ::Class.new(::StandardError)
      ArgumentError = ::Class.new(::StandardError) do
        def initialize(arg_value, arg_name)
          super("#{arg_value} is not a valid #{arg_name[0..-2]}")
        end
      end

      attr_reader :host, :port, :token
      attr_accessor :secure_connection

      def initialize(&block)
        @secure_connection = false
        @port = Truemail::Client::Configuration::DEFAULT_PORT
        tap(&block) if block
      end

      %i[host port token].each do |method|
        define_method("#{method}=") do |argument|
          raise_unless(
            argument,
            __method__,
            method.eql?(:port) ? argument.is_a?(::Integer) && argument.positive? : argument.is_a?(::String)
          )
          instance_variable_set(:"@#{method}", argument)
        end
      end

      def complete?
        !!host && !!token
      end

      private

      def raise_unless(argument_context, argument_name, condition)
        raise Truemail::Client::Configuration::ArgumentError.new(argument_context, argument_name) unless condition
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
truemail-client-0.5.2 lib/truemail/client/configuration.rb
truemail-client-0.5.1 lib/truemail/client/configuration.rb
truemail-client-0.5.0 lib/truemail/client/configuration.rb
truemail-client-0.4.1 lib/truemail/client/configuration.rb
truemail-client-0.4.0 lib/truemail/client/configuration.rb
truemail-client-0.3.4 lib/truemail/client/configuration.rb
truemail-client-0.3.3 lib/truemail/client/configuration.rb
truemail-client-0.3.2 lib/truemail/client/configuration.rb