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