kontoapi-rails 0.3.0 → 0.3.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: 43c3e3a13d6e1708b867b803fc6f78baa3654c86
4
- data.tar.gz: 71034698e88bcea26be0f54bcf504c23edcaaf6e
3
+ metadata.gz: a0fb0f92dbe49be53fac806e06637bbc3cf27aad
4
+ data.tar.gz: da292419b8473328386a5af8bb32f1fae1294989
5
5
  SHA512:
6
- metadata.gz: 2aa73fbb7eac1956539a40f5dd1521f6edbd6cb0547094f9c48510237d893be14df1fa1333e89ce27396a2a6348f0be1c4c7c07c328dd7c0a7fd16f9af829e45
7
- data.tar.gz: 3a66638841bdf49b5a6648dc63eaae4c2b60be943a22b1b70a6916cfc95dd9d9908f9bbacd918ea53414c4bee10ef4eaec35bbdb3fb974574463863575d82eb9
6
+ metadata.gz: 76d414e4eab909fa495bd949e5a322c5924445fd05912e8c9ea66ea15e2edeff4109a0924e30a8352028aae839a4aa69b291962663e810893005293d4dca0c97
7
+ data.tar.gz: 9abe9d7cec8d07bbedff08e2c7fe9b804f02b8407224a7907e711932fc1d4b17ed7170c579e756c1fa8962d2a1674d63a3fb565fe2422160d9d0d9b99bd95775
@@ -65,6 +65,15 @@ Then, in one of the models you want to validate bank account data with:
65
65
  # :fail <-- throw a validation error
66
66
  # :retry <-- (not supported yet)
67
67
  validates_bic :bic
68
+
69
+ # Combined IBAN & BIC validation
70
+ # Check if the given BIC exists, the IBAN is valid and if they match
71
+ # Takes any of the following options (the defaults are shown here):
72
+ # :allow_nil => true, <-- don't validate if both are nil
73
+ # :on_timeout => :ignore <-- do nothing if a timeout occurs, others:
74
+ # :fail <-- throw a validation error
75
+ # :retry <-- (not supported yet)
76
+ validates_iban_and_bic :iban, :bic
68
77
 
69
78
  end
70
79
 
data/Rakefile CHANGED
@@ -18,11 +18,7 @@ Jeweler::Tasks.new do |gem|
18
18
  gem.summary = %Q{A wrapper for the Konto API (https://www.kontoapi.de/) providing model validation.}
19
19
  gem.description = %Q{This library is a wrapper for the Konto API (https://www.kontoapi.de/). It provides a validation method for models that checks if a given account number and bank code represent a valid combination.}
20
20
  gem.email = "jan@schwenzien.org"
21
- gem.authors = ["Jan Schwenzien"]
22
- # Include your dependencies below. Runtime dependencies are required when using your gem,
23
- # and development dependencies are only needed for development (ie running rake tasks, tests, etc)
24
- # gem.add_runtime_dependency 'jabber4r', '> 0.1'
25
- # gem.add_development_dependency 'rspec', '> 1.2.3'
21
+ gem.authors = ["Jan Schwenzien", "Jiayi Zheng"]
26
22
  end
27
23
  Jeweler::RubygemsDotOrgTasks.new
28
24
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.3.1
@@ -2,18 +2,18 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: kontoapi-rails 0.3.0 ruby lib
5
+ # stub: kontoapi-rails 0.3.1 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
- s.name = "kontoapi-rails".freeze
9
- s.version = "0.3.0"
8
+ s.name = "kontoapi-rails"
9
+ s.version = "0.3.1"
10
10
 
11
- s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
- s.require_paths = ["lib".freeze]
13
- s.authors = ["Jan Schwenzien".freeze]
14
- s.date = "2016-12-01"
15
- s.description = "This library is a wrapper for the Konto API (https://www.kontoapi.de/). It provides a validation method for models that checks if a given account number and bank code represent a valid combination.".freeze
16
- s.email = "jan@schwenzien.org".freeze
11
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib"]
13
+ s.authors = ["Jan Schwenzien", "Jiayi Zheng"]
14
+ s.date = "2017-03-08"
15
+ s.description = "This library is a wrapper for the Konto API (https://www.kontoapi.de/). It provides a validation method for models that checks if a given account number and bank code represent a valid combination."
16
+ s.email = "jan@schwenzien.org"
17
17
  s.extra_rdoc_files = [
18
18
  "LICENSE",
19
19
  "README.markdown"
@@ -38,39 +38,39 @@ Gem::Specification.new do |s|
38
38
  "spec/kontoapi-rails_spec.rb",
39
39
  "spec/spec_helper.rb"
40
40
  ]
41
- s.homepage = "http://github.com/GeneralScripting/kontoapi-rails".freeze
42
- s.licenses = ["MIT".freeze]
43
- s.rubygems_version = "2.6.7".freeze
44
- s.summary = "A wrapper for the Konto API (https://www.kontoapi.de/) providing model validation.".freeze
41
+ s.homepage = "http://github.com/GeneralScripting/kontoapi-rails"
42
+ s.licenses = ["MIT"]
43
+ s.rubygems_version = "2.4.8"
44
+ s.summary = "A wrapper for the Konto API (https://www.kontoapi.de/) providing model validation."
45
45
 
46
46
  if s.respond_to? :specification_version then
47
47
  s.specification_version = 4
48
48
 
49
49
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
50
- s.add_runtime_dependency(%q<rails>.freeze, [">= 3.0.0"])
51
- s.add_runtime_dependency(%q<kontoapi-ruby>.freeze, [">= 0.2.0"])
52
- s.add_development_dependency(%q<rspec>.freeze, [">= 2.3.0"])
53
- s.add_development_dependency(%q<bundler>.freeze, [">= 1.1.0"])
54
- s.add_development_dependency(%q<jeweler>.freeze, [">= 1.5.2"])
55
- s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
56
- s.add_development_dependency(%q<rdoc>.freeze, [">= 0"])
50
+ s.add_runtime_dependency(%q<rails>, [">= 3.0.0"])
51
+ s.add_runtime_dependency(%q<kontoapi-ruby>, [">= 0.2.0"])
52
+ s.add_development_dependency(%q<rspec>, [">= 2.3.0"])
53
+ s.add_development_dependency(%q<bundler>, [">= 1.1.0"])
54
+ s.add_development_dependency(%q<jeweler>, [">= 1.5.2"])
55
+ s.add_development_dependency(%q<simplecov>, [">= 0"])
56
+ s.add_development_dependency(%q<rdoc>, [">= 0"])
57
57
  else
58
- s.add_dependency(%q<rails>.freeze, [">= 3.0.0"])
59
- s.add_dependency(%q<kontoapi-ruby>.freeze, [">= 0.2.0"])
60
- s.add_dependency(%q<rspec>.freeze, [">= 2.3.0"])
61
- s.add_dependency(%q<bundler>.freeze, [">= 1.1.0"])
62
- s.add_dependency(%q<jeweler>.freeze, [">= 1.5.2"])
63
- s.add_dependency(%q<simplecov>.freeze, [">= 0"])
64
- s.add_dependency(%q<rdoc>.freeze, [">= 0"])
58
+ s.add_dependency(%q<rails>, [">= 3.0.0"])
59
+ s.add_dependency(%q<kontoapi-ruby>, [">= 0.2.0"])
60
+ s.add_dependency(%q<rspec>, [">= 2.3.0"])
61
+ s.add_dependency(%q<bundler>, [">= 1.1.0"])
62
+ s.add_dependency(%q<jeweler>, [">= 1.5.2"])
63
+ s.add_dependency(%q<simplecov>, [">= 0"])
64
+ s.add_dependency(%q<rdoc>, [">= 0"])
65
65
  end
66
66
  else
67
- s.add_dependency(%q<rails>.freeze, [">= 3.0.0"])
68
- s.add_dependency(%q<kontoapi-ruby>.freeze, [">= 0.2.0"])
69
- s.add_dependency(%q<rspec>.freeze, [">= 2.3.0"])
70
- s.add_dependency(%q<bundler>.freeze, [">= 1.1.0"])
71
- s.add_dependency(%q<jeweler>.freeze, [">= 1.5.2"])
72
- s.add_dependency(%q<simplecov>.freeze, [">= 0"])
73
- s.add_dependency(%q<rdoc>.freeze, [">= 0"])
67
+ s.add_dependency(%q<rails>, [">= 3.0.0"])
68
+ s.add_dependency(%q<kontoapi-ruby>, [">= 0.2.0"])
69
+ s.add_dependency(%q<rspec>, [">= 2.3.0"])
70
+ s.add_dependency(%q<bundler>, [">= 1.1.0"])
71
+ s.add_dependency(%q<jeweler>, [">= 1.5.2"])
72
+ s.add_dependency(%q<simplecov>, [">= 0"])
73
+ s.add_dependency(%q<rdoc>, [">= 0"])
74
74
  end
75
75
  end
76
76
 
@@ -80,7 +80,7 @@ module KontoAPI
80
80
  return true if respond_to?(:"encrypted_#{field}_changed?") && !send(:"encrypted_#{field}_changed?")
81
81
  return true if options[:allow_nil] && value.nil?
82
82
  begin
83
- errors.add(field, :invalid) unless KontoAPI::valid?( :bic => send(field) )
83
+ errors.add(field, :invalid) unless KontoAPI::valid?( :bic => value )
84
84
  rescue Timeout::Error => ex
85
85
  case options[:on_timeout]
86
86
  when :fail
@@ -92,6 +92,37 @@ module KontoAPI
92
92
  end
93
93
  validate :bic_validation
94
94
  end
95
+
96
+ def validates_iban_and_bic(iban_field, bic_field, options={})
97
+ return if KontoAPI::Config.disable_for.include?(::Rails.env)
98
+ options.symbolize_keys!
99
+ options.reverse_merge!( :allow_nil => true, :on_timeout => :ignore )
100
+ define_method :iban_and_bic_validation do
101
+ iban_value = send(iban_field)
102
+ bic_value = send(bic_field)
103
+ return true if [iban_field, bic_field].all? do |field|
104
+ respond_to?(:"#{field}_changed?") && !send(:"#{field}_changed?")
105
+ end
106
+ return true if [iban_field, bic_field].all? do |field|
107
+ respond_to?(:"encrypted_#{field}_changed?") && !send(:"encrypted_#{field}_changed?")
108
+ end
109
+ return true if options[:allow_nil] && iban_value.nil? && bic_value.nil?
110
+ begin
111
+ unless KontoAPI::valid?( :iban => iban_value, :bic => bic_value )
112
+ errors.add(iban_field, :invalid)
113
+ errors.add(bic_field, :invalid)
114
+ end
115
+ rescue Timeout::Error => ex
116
+ case options[:on_timeout]
117
+ when :fail
118
+ errors.add(field, :timeout)
119
+ when :ignore
120
+ # nop
121
+ end
122
+ end
123
+ end
124
+ validate :iban_and_bic_validation
125
+ end
95
126
  end
96
127
 
97
128
  end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kontoapi-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Schwenzien
8
+ - Jiayi Zheng
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2016-12-01 00:00:00.000000000 Z
12
+ date: 2017-03-08 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: rails
@@ -156,7 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
156
157
  version: '0'
157
158
  requirements: []
158
159
  rubyforge_project:
159
- rubygems_version: 2.6.7
160
+ rubygems_version: 2.4.8
160
161
  signing_key:
161
162
  specification_version: 4
162
163
  summary: A wrapper for the Konto API (https://www.kontoapi.de/) providing model validation.