iban_calculator 0.1.1 → 0.2.1

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: dcc664a899ba82d49e767966619eea8ea8940e14
4
- data.tar.gz: abd9e3ed0a5a19d11bb3059671a2390258021c86
3
+ metadata.gz: 8f9d8247ec70deaea3ad00409ad0fff286c12ed3
4
+ data.tar.gz: 8351ce3d19b71e9f374f9cc38adb2335e6f84524
5
5
  SHA512:
6
- metadata.gz: e026ee6df2aaf18a0f7b0303e9bdf913c2c2d4104939dda87e239f3a787d0a8fe1000c00d1d09731d0e09bd05d52f7ae0b650a71fba76d29ca6409c19a7aa073
7
- data.tar.gz: 50ade0dd48e46ceede0b8e83e45de038547b45c2e611cc6cd2d72832131b774400ac38e9a019b3fce673f7a1dc2c12531e310b7217dcdd592be200957c131404
6
+ metadata.gz: 32dc7daebab254668bb75e6033d7402a652cb972a6a375b20df6be913edf16859916ef3835869b026af73a5f67e6ed2b2fd839df82d9dad6ce99d1363411bb73
7
+ data.tar.gz: 67bc127a1c0aee343876467836543f1312e5de1fd166e631e77f18a63f51be76dc34d7bf3a4c924ae1445bc4bbf10106830510ba3a2a6dde7e8de35122a1c8d8
@@ -0,0 +1,6 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
4
+ - 2.1.2
5
+ - 2.2.0
6
+ script: rspec
@@ -1,3 +1,11 @@
1
+ 0.2.1
2
+ -----
3
+ * make it work with newer version of active_support too
4
+
5
+ 0.2.0
6
+ -----
7
+ * [lower active_support dependency](https://github.com/railslove/iban_calculator/pull/7)
8
+
1
9
  0.1.1
2
10
  -----
3
11
 
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ [![Build Status](https://travis-ci.org/railslove/iban_calculator.svg?branch=master)](https://travis-ci.org/railslove/iban_calculator)
2
+
1
3
  # IbanCalculator
2
4
 
3
5
  A wrapper for ibanrechner.de API. It allows converting bank account data from legacy syntax to new SEPA IBAN/BIC.
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_dependency "activesupport", "~> 4"
21
+ spec.add_dependency "activesupport", ">= 3"
22
22
  spec.add_dependency "savon", "~> 2"
23
23
 
24
24
  spec.add_development_dependency "bundler", "~> 1.6"
@@ -1,4 +1,5 @@
1
1
  require 'iban_calculator/version'
2
+ require 'active_support/version'
2
3
  require 'active_support/configurable'
3
4
  require 'active_support/core_ext/hash'
4
5
  require 'logger'
@@ -8,22 +9,25 @@ require 'iban_calculator/bic_candidate'
8
9
  require 'iban_calculator/iban_bic'
9
10
  require 'iban_calculator/iban_validator_response'
10
11
  require 'iban_calculator/invalid_data'
12
+ require 'iban_calculator/active_support' if ActiveSupport::VERSION::MAJOR == 3
11
13
 
12
14
  module IbanCalculator
13
15
  # Extensions
14
16
  include ActiveSupport::Configurable
15
17
 
16
18
  # Configuration
17
- config_accessor(:url) { 'https://ssl.ibanrechner.de/soap/?wsdl' }
18
- config_accessor(:user) { '' }
19
- config_accessor(:password) { '' }
20
- config_accessor(:logger) { Logger.new(STDOUT) }
19
+ config_accessor(:url) { 'https://ssl.ibanrechner.de/soap/?wsdl' }
20
+ config_accessor(:user) { '' }
21
+ config_accessor(:password) { '' }
22
+ config_accessor(:logger) { Logger.new(STDOUT) }
23
+ config_accessor(:read_timeout) { 5 }
24
+ config_accessor(:open_timeout) { 5 }
21
25
 
22
26
  # Errors
23
27
  ServiceError = Class.new(StandardError)
24
28
 
25
29
  def self.calculate_iban(attributes = {})
26
- client = IbanBic.new(config.user, config.password, config.url, config.logger)
30
+ client = IbanBic.new(config)
27
31
  client.calculate_iban(attributes)
28
32
  end
29
33
 
@@ -33,7 +37,7 @@ module IbanCalculator
33
37
  end
34
38
 
35
39
  def self.execute(method, options = {})
36
- client = Savon.client(wsdl: config.url, logger: config.logger)
40
+ client = Savon.client(wsdl: config.url, logger: config.logger, read_timeout: config.read_timeout, open_timeout: config.open_timeout)
37
41
  client.call(method, message: options).tap do |response|
38
42
  status = response.body[:"#{method}_response"][:return][:result]
39
43
  fail(ServiceError, status) unless response.body[:"#{method}_response"][:return][:return_code]
@@ -0,0 +1,35 @@
1
+ # these are methods implemented in active_support 4 which
2
+ # are required to run this gem with active_support 3
3
+
4
+ module IbanCalculator
5
+ include ActiveSupport::Configurable
6
+
7
+ # taken from: activesupport/lib/active_support/core_ext/hash/keys.rb
8
+ Hash.class_eval do
9
+ def deep_stringify_keys!
10
+ deep_transform_keys!{ |key| key.to_s }
11
+ end
12
+
13
+ def deep_transform_keys!(&block)
14
+ keys.each do |key|
15
+ value = delete(key)
16
+ self[yield(key)] = value.is_a?(Hash) ? value.deep_transform_keys!(&block) : value
17
+ end
18
+ self
19
+ end
20
+ end
21
+ end
22
+
23
+ class << IbanCalculator
24
+ alias_method :old_config_accessor, :config_accessor
25
+
26
+ def config_accessor(*names)
27
+ old_config_accessor(*names)
28
+
29
+ return unless block_given?
30
+
31
+ names.each do |name|
32
+ send("#{name}=", yield)
33
+ end
34
+ end
35
+ end
@@ -27,13 +27,14 @@ module IbanCalculator
27
27
  PROBABLY_VALID_RESPONSE_CODE = 32..127
28
28
  SERVICE_ERROR_RESPONSE_CODE = 65536
29
29
 
30
- attr_accessor :user, :password, :url, :logger
30
+ attr_accessor :user, :password, :url, :logger, :config
31
31
 
32
- def initialize(user, password, url, logger)
33
- self.user = user
34
- self.password = password
35
- self.url = url
36
- self.logger = logger
32
+ def initialize(config)
33
+ self.user = config.user
34
+ self.password = config.password
35
+ self.url = config.url
36
+ self.logger = config.logger
37
+ self.config = config
37
38
  end
38
39
 
39
40
  # You should provide country, bank_code, and account_number. (cin, abi, and cab for Italian accounts)
@@ -98,7 +99,7 @@ module IbanCalculator
98
99
  end
99
100
 
100
101
  def client
101
- @client ||= Savon.client(wsdl: url)
102
+ @client ||= Savon.client(wsdl: url, read_timeout: config.read_timeout, open_timeout: config.open_timeout)
102
103
  end
103
104
  end
104
105
  end
@@ -1,3 +1,3 @@
1
1
  module IbanCalculator
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -1,5 +1,18 @@
1
+ require 'ostruct'
2
+
1
3
  describe IbanCalculator::IbanBic do
2
- subject { described_class.new('user', 'pass', 'url', Logger.new(STDOUT) ) }
4
+ let(:config) {
5
+ OpenStruct.new(
6
+ user: 'user',
7
+ password: 'pass',
8
+ url: 'url',
9
+ logger: Logger.new(STDOUT),
10
+ read_timeout: 5,
11
+ open_timeout: 5
12
+ )
13
+ }
14
+
15
+ subject { described_class.new(config) }
3
16
 
4
17
  before { allow(subject.logger).to receive(:info) }
5
18
 
@@ -49,6 +49,16 @@ describe IbanCalculator do
49
49
  end
50
50
  end
51
51
 
52
+ describe '.calculate_iban' do
53
+ let(:error_message) { 'Service could not handle the request' }
54
+ let(:response) { { calculate_iban_response: { return: { return_code: '65536' } } } }
55
+
56
+ before { allow_any_instance_of(Savon::Client).to receive(:call) { double(body: response) } }
57
+
58
+ it 'raises a generic exception' do
59
+ expect { IbanCalculator.calculate_iban({}) }.to raise_error(IbanCalculator::ServiceError, error_message)
60
+ end
61
+ end
52
62
 
53
63
  describe '.execute' do
54
64
  context 'invalid username and password' do
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iban_calculator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maximilian Schulz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-02 00:00:00.000000000 Z
11
+ date: 2018-05-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '4'
19
+ version: '3'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '4'
26
+ version: '3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: savon
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -89,6 +89,7 @@ extra_rdoc_files: []
89
89
  files:
90
90
  - ".gitignore"
91
91
  - ".rspec"
92
+ - ".travis.yml"
92
93
  - CHANGELOG.md
93
94
  - Gemfile
94
95
  - LICENSE.txt
@@ -96,6 +97,7 @@ files:
96
97
  - Rakefile
97
98
  - iban_calculator.gemspec
98
99
  - lib/iban_calculator.rb
100
+ - lib/iban_calculator/active_support.rb
99
101
  - lib/iban_calculator/bank.rb
100
102
  - lib/iban_calculator/bic_candidate.rb
101
103
  - lib/iban_calculator/iban_bic.rb
@@ -128,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
128
130
  version: '0'
129
131
  requirements: []
130
132
  rubyforge_project:
131
- rubygems_version: 2.4.3
133
+ rubygems_version: 2.6.14
132
134
  signing_key:
133
135
  specification_version: 4
134
136
  summary: Calculate IBAN and BIC for countries of Single European Payments Area (SEPA).