Sha256: 319a90839192b834f0124d02e3e7d1f5bbb0ca6bfcb139a9c5d6de3036fc33ad

Contents?: true

Size: 1.15 KB

Versions: 3

Compression:

Stored size: 1.15 KB

Contents

# frozen_string_literal: true

require_relative 'lookup/vies'
require_relative 'lookup/hmrc'

class Valvat
  class Lookup
    def initialize(vat, options = {})
      @vat = Valvat(vat)
      @options = options || {}
      @options[:requester] ||= @options[:requester_vat]
    end

    def validate
      return false if !@options[:skip_local_validation] && !@vat.valid?
      return handle_error(response[:error]) if response[:error]

      response[:valid] && show_details? ? response : response[:valid]
    end

    class << self
      def validate(vat, options = {})
        new(vat, options).validate
      end
    end

    private

    def valid?
      response[:valid]
    end

    def response
      @response ||= webservice.new(@vat, @options).perform
    end

    def webservice
      case @vat.vat_country_code
      when 'GB' then HMRC
      else
        VIES
      end
    end

    def show_details?
      @options[:requester] || @options[:detail]
    end

    def handle_error(error)
      if error.is_a?(MaintenanceError)
        raise error if @options[:raise_error]
      else
        raise error unless @options[:raise_error] == false
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
valvat-1.3.0 lib/valvat/lookup.rb
valvat-1.2.1 lib/valvat/lookup.rb
valvat-1.2.0 lib/valvat/lookup.rb