Sha256: d436c3ed7be730cec4a4d3f6a9bb57603bba5044cccf3b528afab5170b702a38

Contents?: true

Size: 1.06 KB

Versions: 7

Compression:

Stored size: 1.06 KB

Contents

# frozen_string_literal: true

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

class Valvat
  class Lookup
    def initialize(vat, options = {})
      @vat = Valvat(vat)
      @options = Valvat::Options(options)
    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 response
      @response ||= webservice.new(@vat, @options).perform
    end

    def webservice
      return HMRC if @vat.vat_country_code == 'GB'

      VIES
    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

7 entries across 7 versions & 1 rubygems

Version Path
valvat-2.0.1 lib/valvat/lookup.rb
valvat-2.0.0 lib/valvat/lookup.rb
valvat-1.4.4 lib/valvat/lookup.rb
valvat-1.4.3 lib/valvat/lookup.rb
valvat-1.4.2 lib/valvat/lookup.rb
valvat-1.4.1 lib/valvat/lookup.rb
valvat-1.4.0 lib/valvat/lookup.rb