class Vatlayer::Api
Attributes
access_key[R]
https[R]
Public Class Methods
new(access_key, https)
click to toggle source
# File lib/vatlayer/api.rb, line 9 def initialize(access_key, https) @access_key = access_key @https = https end
Public Instance Methods
price(amount: nil, country_code: nil, ip_address: nil, use_client_ip: nil, options: {})
click to toggle source
# File lib/vatlayer/api.rb, line 14 def price(amount: nil, country_code: nil, ip_address: nil, use_client_ip: nil, options: {}) request('/price', amount: amount, country_code: country_code, ip_address: ip_address, use_client_ip: use_client_ip, type: options[:type], incl: options[:incl]) end
rate(country_code: nil, ip_address: nil, use_client_ip: nil)
click to toggle source
# File lib/vatlayer/api.rb, line 19 def rate(country_code: nil, ip_address: nil, use_client_ip: nil) request('/rate', country_code: country_code, ip_address: ip_address, use_client_ip: use_client_ip) end
rate_list()
click to toggle source
# File lib/vatlayer/api.rb, line 23 def rate_list request('/rate_list') end
validate(vat_number: nil)
click to toggle source
# File lib/vatlayer/api.rb, line 27 def validate(vat_number: nil) request('/validate', vat_number: vat_number) end
Private Instance Methods
api_base_url()
click to toggle source
# File lib/vatlayer/api.rb, line 33 def api_base_url https ? 'https://apilayer.net/api' : 'http://apilayer.net/api' end
prepare_elements(response)
click to toggle source
# File lib/vatlayer/api.rb, line 43 def prepare_elements(response) response.each_with_object({}) do |(k, v), h| h[k.downcase.split(/\s|\-/).join('_')] = if v.is_a?(String) v.tr("\n", ' ') elsif v.is_a?(Hash) prepare_elements(v) else v end end end
prepared_params(params)
click to toggle source
# File lib/vatlayer/api.rb, line 55 def prepared_params(params) params.merge(access_key: access_key) end
request(path, params = {})
click to toggle source
# File lib/vatlayer/api.rb, line 37 def request(path, params = {}) response = HTTP.get(api_base_url + path, params: prepared_params(params)).parse Vatlayer::Response.const_set('Data', Vatlayer::Response.instance_variable_get(:@response_class)) .new(prepare_elements(response)) end