kontoapi-rails 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +25 -25
- data/README.markdown +22 -1
- data/VERSION +1 -1
- data/kontoapi-rails.gemspec +2 -2
- data/lib/kontoapi-rails/orm/active_record_extension.rb +20 -3
- data/lib/kontoapi-rails/validators/bank_account_validator.rb +6 -13
- metadata +4 -4
data/Gemfile.lock
CHANGED
@@ -2,12 +2,12 @@ GEM
|
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
4
|
abstract (1.0.0)
|
5
|
-
actionmailer (3.0.
|
6
|
-
actionpack (= 3.0.
|
5
|
+
actionmailer (3.0.7)
|
6
|
+
actionpack (= 3.0.7)
|
7
7
|
mail (~> 2.2.15)
|
8
|
-
actionpack (3.0.
|
9
|
-
activemodel (= 3.0.
|
10
|
-
activesupport (= 3.0.
|
8
|
+
actionpack (3.0.7)
|
9
|
+
activemodel (= 3.0.7)
|
10
|
+
activesupport (= 3.0.7)
|
11
11
|
builder (~> 2.1.2)
|
12
12
|
erubis (~> 2.6.6)
|
13
13
|
i18n (~> 0.5.0)
|
@@ -15,19 +15,19 @@ GEM
|
|
15
15
|
rack-mount (~> 0.6.14)
|
16
16
|
rack-test (~> 0.5.7)
|
17
17
|
tzinfo (~> 0.3.23)
|
18
|
-
activemodel (3.0.
|
19
|
-
activesupport (= 3.0.
|
18
|
+
activemodel (3.0.7)
|
19
|
+
activesupport (= 3.0.7)
|
20
20
|
builder (~> 2.1.2)
|
21
21
|
i18n (~> 0.5.0)
|
22
|
-
activerecord (3.0.
|
23
|
-
activemodel (= 3.0.
|
24
|
-
activesupport (= 3.0.
|
22
|
+
activerecord (3.0.7)
|
23
|
+
activemodel (= 3.0.7)
|
24
|
+
activesupport (= 3.0.7)
|
25
25
|
arel (~> 2.0.2)
|
26
26
|
tzinfo (~> 0.3.23)
|
27
|
-
activeresource (3.0.
|
28
|
-
activemodel (= 3.0.
|
29
|
-
activesupport (= 3.0.
|
30
|
-
activesupport (3.0.
|
27
|
+
activeresource (3.0.7)
|
28
|
+
activemodel (= 3.0.7)
|
29
|
+
activesupport (= 3.0.7)
|
30
|
+
activesupport (3.0.7)
|
31
31
|
addressable (2.2.5)
|
32
32
|
arel (2.0.9)
|
33
33
|
builder (2.1.2)
|
@@ -43,7 +43,7 @@ GEM
|
|
43
43
|
kontoapi-ruby (0.1.0)
|
44
44
|
addressable
|
45
45
|
yajl-ruby
|
46
|
-
mail (2.2.
|
46
|
+
mail (2.2.17)
|
47
47
|
activesupport (>= 2.3.6)
|
48
48
|
i18n (>= 0.4.0)
|
49
49
|
mime-types (~> 1.16)
|
@@ -55,17 +55,17 @@ GEM
|
|
55
55
|
rack (>= 1.0.0)
|
56
56
|
rack-test (0.5.7)
|
57
57
|
rack (>= 1.0)
|
58
|
-
rails (3.0.
|
59
|
-
actionmailer (= 3.0.
|
60
|
-
actionpack (= 3.0.
|
61
|
-
activerecord (= 3.0.
|
62
|
-
activeresource (= 3.0.
|
63
|
-
activesupport (= 3.0.
|
58
|
+
rails (3.0.7)
|
59
|
+
actionmailer (= 3.0.7)
|
60
|
+
actionpack (= 3.0.7)
|
61
|
+
activerecord (= 3.0.7)
|
62
|
+
activeresource (= 3.0.7)
|
63
|
+
activesupport (= 3.0.7)
|
64
64
|
bundler (~> 1.0)
|
65
|
-
railties (= 3.0.
|
66
|
-
railties (3.0.
|
67
|
-
actionpack (= 3.0.
|
68
|
-
activesupport (= 3.0.
|
65
|
+
railties (= 3.0.7)
|
66
|
+
railties (3.0.7)
|
67
|
+
actionpack (= 3.0.7)
|
68
|
+
activesupport (= 3.0.7)
|
69
69
|
rake (>= 0.8.7)
|
70
70
|
thor (~> 0.14.4)
|
71
71
|
rake (0.8.7)
|
data/README.markdown
CHANGED
@@ -30,17 +30,38 @@ Then, in one of the models you want to validate bank account data with:
|
|
30
30
|
|
31
31
|
# account data validation
|
32
32
|
# (really just a shortcut for `validates_with KontoAPI::BankAccountValidator`)
|
33
|
-
#
|
33
|
+
# Takes any of the following options (the defaults are shown here):
|
34
34
|
# :account_number_field => :account_number,
|
35
35
|
# :bank_code_field => :bank_code,
|
36
36
|
# :allow_nil => true, <-- don't validate if one of them is nil
|
37
37
|
# :on_timeout => :ignore <-- do nothing if a timeout occurs, others:
|
38
38
|
# :fail <-- throw a validation error
|
39
39
|
# :retry <-- (not supported yet)
|
40
|
+
#
|
41
|
+
# If validations fails, an error within the standard ActiveRecord I18n scopes
|
42
|
+
# will be added to the :account_number_field:
|
43
|
+
# :invalid <-- if it is invalid
|
44
|
+
# :timeout <-- if :on_timeout is set to :fail and the api call timed out
|
40
45
|
validates_account_data
|
41
46
|
|
42
47
|
end
|
43
48
|
|
49
|
+
And if you want to autocomplete the bank name:
|
50
|
+
|
51
|
+
class PaymentData < ActiveRecord::Base
|
52
|
+
|
53
|
+
# bank name autocompletion
|
54
|
+
# takes any of the following options (the defaults are shown here):
|
55
|
+
# :bank_code_field => :bank_code,
|
56
|
+
# :bank_name_field => :bank_name,
|
57
|
+
# :always_overwrite => false, <-- autocomplete even if bank name already present
|
58
|
+
# :on_timeout => :ignore <-- do nothing if a timeout occurs, others:
|
59
|
+
# :retry <-- (not supported yet)
|
60
|
+
# 'any string' <-- use this string as the value
|
61
|
+
autocomplete_bank_name
|
62
|
+
|
63
|
+
end
|
64
|
+
|
44
65
|
Copyright
|
45
66
|
---------
|
46
67
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.2
|
data/kontoapi-rails.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{kontoapi-rails}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Jan Schwenzien"]
|
12
|
-
s.date = %q{2011-04-
|
12
|
+
s.date = %q{2011-04-20}
|
13
13
|
s.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.}
|
14
14
|
s.email = %q{jan@schwenzien.org}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -8,6 +8,12 @@ module KontoAPI
|
|
8
8
|
module ClassMethods
|
9
9
|
def validates_bank_account(options={})
|
10
10
|
options.symbolize_keys!
|
11
|
+
options.reverse_merge!(
|
12
|
+
:account_number_field => :account_number,
|
13
|
+
:bank_code_field => :bank_code,
|
14
|
+
:allow_nil => true,
|
15
|
+
:on_timeout => :ignore
|
16
|
+
)
|
11
17
|
validates_with KontoAPI::BankAccountValidator, options
|
12
18
|
end
|
13
19
|
|
@@ -15,13 +21,24 @@ module KontoAPI
|
|
15
21
|
options.symbolize_keys!
|
16
22
|
options.reverse_merge!(
|
17
23
|
:bank_code_field => :bank_code,
|
18
|
-
:bank_name_field => :bank_name
|
24
|
+
:bank_name_field => :bank_name,
|
25
|
+
:always_overwrite => false
|
19
26
|
)
|
20
|
-
#write_inheritable_attribute(:autocomplete_bank_name_options, options)
|
21
27
|
define_method :autocomplete_bank_name do
|
22
28
|
current_value = send(:"#{options[:bank_name_field]}")
|
23
29
|
blz = send(:"#{options[:bank_code_field]}")
|
24
|
-
|
30
|
+
begin
|
31
|
+
self.send(:"#{options[:bank_name_field]}=", KontoAPI::bank_name(blz)) if (options[:always_overwrite] || current_value.blank?) && blz.present?
|
32
|
+
rescue Timeout::Error => ex
|
33
|
+
case options[:on_timeout]
|
34
|
+
when String
|
35
|
+
self.send(:"#{options[:bank_name_field]}=", options[:on_timeout])
|
36
|
+
when nil, :ignore
|
37
|
+
# nop
|
38
|
+
when :retry
|
39
|
+
raise 'not implemented yet'
|
40
|
+
end
|
41
|
+
end
|
25
42
|
end
|
26
43
|
before_save :autocomplete_bank_name
|
27
44
|
end
|
@@ -3,22 +3,15 @@ require 'active_model/validator'
|
|
3
3
|
module KontoAPI
|
4
4
|
class BankAccountValidator < ActiveModel::Validator
|
5
5
|
|
6
|
-
DEFAULTS = {
|
7
|
-
:account_number_field => :account_number,
|
8
|
-
:bank_code_field => :bank_code,
|
9
|
-
:allow_nil => true,
|
10
|
-
:on_timeout => :ignore
|
11
|
-
}
|
12
|
-
|
13
6
|
def validate(record)
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
record.errors.add(:"#{
|
7
|
+
account_number = record.send(:"#{options[:account_number_field]}")
|
8
|
+
bank_code = record.send(:"#{options[:bank_code_field]}")
|
9
|
+
return true if options[:allow_nil] && (account_number.nil? || bank_code.nil?)
|
10
|
+
record.errors.add(:"#{options[:account_number_field]}", :invalid) unless KontoAPI::valid?(account_number, bank_code)
|
18
11
|
rescue Timeout::Error => ex
|
19
|
-
case
|
12
|
+
case options[:on_timeout]
|
20
13
|
when :fail
|
21
|
-
record.errors.add(:"#{
|
14
|
+
record.errors.add(:"#{options[:account_number_field]}", :timeout)
|
22
15
|
when :ignore
|
23
16
|
# nop
|
24
17
|
when :retry
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kontoapi-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jan Schwenzien
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-04-
|
18
|
+
date: 2011-04-20 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: rails
|