vatlayer 0.2.4 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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