class Valvat::Lookup::HMRC
Constants
- ENDPOINT_URL
- FAULTS
- HEADERS
Public Instance Methods
perform()
click to toggle source
# File lib/valvat/lookup/hmrc.rb, line 17 def perform return { valid: false } unless @options[:uk] parse(fetch(endpoint_uri).body) end
Private Instance Methods
build_fault(raw)
click to toggle source
# File lib/valvat/lookup/hmrc.rb, line 78 def build_fault(raw) fault = raw['code'] return { valid: false } if fault == 'NOT_FOUND' exception = FAULTS[fault] || UnknownLookupError { error: exception.new("#{fault}#{raw['message'] ? " (#{raw['message']})" : ''}", self.class) } end
build_request(uri)
click to toggle source
# File lib/valvat/lookup/hmrc.rb, line 31 def build_request(uri) Net::HTTP::Get.new(uri.request_uri, HEADERS) end
convert(raw)
click to toggle source
Return a similar format to VIES
Main differences are:
-
request_date is a (more precise) Time instead of Date
-
address is newline separated instead of coma (also more precise)
# File lib/valvat/lookup/hmrc.rb, line 43 def convert(raw) return build_fault(raw) if raw.key?('code') { address: format_address(raw.dig('target', 'address')), country_code: raw.dig('target', 'address', 'countryCode'), name: raw.dig('target', 'name'), vat_number: raw.dig('target', 'vatNumber'), valid: true }.tap do |hash| hash[:request_date] = Time.parse(raw['processingDate']) if raw.key?('processingDate') hash[:request_identifier] = raw['consultationNumber'] if raw.key?('consultationNumber') end end
endpoint_uri()
click to toggle source
# File lib/valvat/lookup/hmrc.rb, line 25 def endpoint_uri endpoint = "/#{@vat.to_s_wo_country}" endpoint += "/#{@requester.to_s_wo_country}" if @requester URI.parse(ENDPOINT_URL + endpoint) end
format_address(address)
click to toggle source
Example raw address from the API: {
"line1": "HM REVENUE AND CUSTOMS", "line2": "RUBY HOUSE", "line3": "8 RUBY PLACE", "line4": "ABERDEEN", "postcode": "AB10 1ZP", "countryCode": "GB"
}
# File lib/valvat/lookup/hmrc.rb, line 66 def format_address(address) address&.values&.join("\n") end
parse(body)
click to toggle source
# File lib/valvat/lookup/hmrc.rb, line 35 def parse(body) convert(JSON.parse(body)) end