vatlayer 0.2.4 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2bdcfcb9f305a47e33d3d35bf9c807f8156fdfb0
4
- data.tar.gz: 79252de797b35a6693c472de39a94a69c63cd5a2
3
+ metadata.gz: 15ed1a738f33941419c927c4c786b431a194e2fc
4
+ data.tar.gz: 27605ec63ae1d469f7f4c86a6f223cfc81392598
5
5
  SHA512:
6
- metadata.gz: 2eced71bad678e30fe4edcc9b707868a6faa18cd25ce4f4bb67dfced45447f14bb0db0153ec00ec651deb0e77c56d99d47329bc99aa808f91424667c42ca582e
7
- data.tar.gz: da496a599e37e59fc5747e960fd0b661ec0fc86cf052ff978090a95b3679db9487b3428e6c40fa47953cfb74ed621a49ea04bd98efaa24531900872f7a401e85
6
+ metadata.gz: 9933d97d992e924ae81e3dc5774fb32f23d670ab63ea95ca70bc0babdd4ec37261c69bd32601ef382abaa696786c14d4a9762d0213a6f689939bfc8f2ba29c93
7
+ data.tar.gz: 03dd3358207ab30cd8d4c4bd4cd879563fd23708dc17472db342b539f844fa486d8962e8e5007eed521b004ffc35f2aedabcc466e37910888e077866d50cf100
data/README.md CHANGED
@@ -62,7 +62,7 @@ vatlayer = Vatlayer.new
62
62
 
63
63
  #### Validate
64
64
  ```ruby
65
- vatlayer.validate('LU26375245')
65
+ vatlayer.validate(vat_number: 'LU26375245')
66
66
 
67
67
  # <Vatlayer::Response::Data:0x0000555fd334ba10
68
68
  # @valid=true,
data/lib/vatlayer.rb CHANGED
@@ -2,7 +2,6 @@
2
2
 
3
3
  require File.expand_path(File.join(File.dirname(__FILE__), 'vatlayer/api'))
4
4
  require File.expand_path(File.join(File.dirname(__FILE__), 'vatlayer/configuration'))
5
- require File.expand_path(File.join(File.dirname(__FILE__), 'vatlayer/response/error'))
6
5
  require File.expand_path(File.join(File.dirname(__FILE__), 'vatlayer/response/data'))
7
6
  require File.expand_path(File.join(File.dirname(__FILE__), 'vatlayer/version'))
8
7
 
data/lib/vatlayer/api.rb CHANGED
@@ -11,8 +11,12 @@ module Vatlayer
11
11
  @https = https
12
12
  end
13
13
 
14
+ def rate_list
15
+ request('/rate_list')
16
+ end
17
+
14
18
  def validate(vat_number:)
15
- Vatlayer::Response::Data.new(request('/validate', vat_number: vat_number))
19
+ request('/validate', vat_number: vat_number)
16
20
  end
17
21
 
18
22
  private
@@ -21,9 +25,22 @@ module Vatlayer
21
25
  https ? 'https://apilayer.net/api' : 'http://apilayer.net/api'
22
26
  end
23
27
 
24
- def request(path, params)
28
+ def request(path, params = {})
25
29
  response = HTTP.get(api_base_url + path, params: prepared_params(params)).parse
26
- response.each_with_object({}) { |(k, v), h| h[k] = v.is_a?(String) ? v.tr("\n", ' ') : v }
30
+ Vatlayer::Response.const_set('Data', Vatlayer::Response.instance_variable_get(:@response_class))
31
+ .new(prepare_elements(response))
32
+ end
33
+
34
+ def prepare_elements(response)
35
+ response.each_with_object({}) do |(k, v), h|
36
+ h[k.downcase.split(' ').join('_')] = if v.is_a?(String)
37
+ v.tr("\n", ' ')
38
+ elsif v.is_a?(Hash)
39
+ prepare_elements(v)
40
+ else
41
+ v
42
+ end
43
+ end
27
44
  end
28
45
 
29
46
  def prepared_params(params)
@@ -2,13 +2,22 @@
2
2
 
3
3
  module Vatlayer
4
4
  module Response
5
- class Data
5
+ @response_class = Class.new do
6
6
  attr_reader :error
7
7
 
8
8
  def initialize(attributes)
9
9
  attributes.each do |(key, value)|
10
10
  self.class.class_eval { attr_accessor :"#{key}" }
11
- public_send("#{key}=", key == 'error' ? Vatlayer::Response::Error.new(value) : value)
11
+ generate_methods(key, value)
12
+ end
13
+ end
14
+
15
+ def generate_methods(key, value)
16
+ if value.is_a?(Hash)
17
+ Vatlayer::Response.const_set(key.capitalize, Vatlayer::Response.instance_variable_get(:@response_class))
18
+ public_send("#{key}=", Object.const_get("Vatlayer::Response::#{key.capitalize}").new(value))
19
+ else
20
+ public_send("#{key}=", value)
12
21
  end
13
22
  end
14
23
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Vatlayer
4
- VERSION = '0.2.4'.freeze
4
+ VERSION = '0.3.0'.freeze
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vatlayer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vlad Romaniuk
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-05-13 00:00:00.000000000 Z
11
+ date: 2018-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: http
@@ -115,7 +115,6 @@ files:
115
115
  - lib/vatlayer/api.rb
116
116
  - lib/vatlayer/configuration.rb
117
117
  - lib/vatlayer/response/data.rb
118
- - lib/vatlayer/response/error.rb
119
118
  - lib/vatlayer/version.rb
120
119
  - vatlayer.gemspec
121
120
  homepage:
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Vatlayer
4
- module Response
5
- class Error
6
- def initialize(attributes)
7
- attributes.each do |(key, value)|
8
- self.class.class_eval { attr_accessor :"#{key}" }
9
- public_send("#{key}=", value)
10
- end
11
- end
12
- end
13
- end
14
- end