kontoapi-ruby 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,11 +1,12 @@
1
1
  source "http://rubygems.org"
2
2
 
3
3
  gem 'addressable'
4
- gem 'nibbler', '>= 1.2.0'
4
+ gem 'yajl-ruby'
5
5
 
6
6
  group :development do
7
7
  gem "rspec", "~> 2.3.0"
8
8
  gem "bundler", "~> 1.0.0"
9
9
  gem "jeweler", "~> 1.5.2"
10
10
  gem "rcov", ">= 0"
11
+ gem "fakeweb"
11
12
  end
data/Gemfile.lock CHANGED
@@ -3,12 +3,12 @@ GEM
3
3
  specs:
4
4
  addressable (2.2.5)
5
5
  diff-lcs (1.1.2)
6
+ fakeweb (1.3.0)
6
7
  git (1.2.5)
7
8
  jeweler (1.5.2)
8
9
  bundler (~> 1.0.0)
9
10
  git (>= 1.2.5)
10
11
  rake
11
- nibbler (1.2.1)
12
12
  rake (0.8.7)
13
13
  rcov (0.9.9)
14
14
  rspec (2.3.0)
@@ -19,6 +19,7 @@ GEM
19
19
  rspec-expectations (2.3.0)
20
20
  diff-lcs (~> 1.1.2)
21
21
  rspec-mocks (2.3.0)
22
+ yajl-ruby (0.8.2)
22
23
 
23
24
  PLATFORMS
24
25
  ruby
@@ -26,7 +27,8 @@ PLATFORMS
26
27
  DEPENDENCIES
27
28
  addressable
28
29
  bundler (~> 1.0.0)
30
+ fakeweb
29
31
  jeweler (~> 1.5.2)
30
- nibbler (>= 1.2.0)
31
32
  rcov
32
33
  rspec (~> 2.3.0)
34
+ yajl-ruby
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.1.0
@@ -0,0 +1,71 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{kontoapi-ruby}
8
+ s.version = "0.1.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Jan Schwenzien"]
12
+ s.date = %q{2011-04-18}
13
+ s.description = %q{A ruby library to access the Konto API (https://www.kontoapi.de/), a webservice that performs validity checks and other services regarding german bank accounts.}
14
+ s.email = %q{jan@general-scripting.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README.markdown"
18
+ ]
19
+ s.files = [
20
+ "Gemfile",
21
+ "Gemfile.lock",
22
+ "LICENSE",
23
+ "README.markdown",
24
+ "Rakefile",
25
+ "VERSION",
26
+ "kontoapi-ruby.gemspec",
27
+ "lib/kontoapi-ruby.rb",
28
+ "spec/kontoapi-ruby_spec.rb",
29
+ "spec/spec_helper.rb"
30
+ ]
31
+ s.homepage = %q{http://github.com/GeneralScripting/kontoapi-ruby}
32
+ s.licenses = ["MIT"]
33
+ s.require_paths = ["lib"]
34
+ s.rubygems_version = %q{1.7.2}
35
+ s.summary = %q{Konto API Ruby Library}
36
+ s.test_files = [
37
+ "spec/kontoapi-ruby_spec.rb",
38
+ "spec/spec_helper.rb"
39
+ ]
40
+
41
+ if s.respond_to? :specification_version then
42
+ s.specification_version = 3
43
+
44
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
45
+ s.add_runtime_dependency(%q<addressable>, [">= 0"])
46
+ s.add_runtime_dependency(%q<yajl-ruby>, [">= 0"])
47
+ s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
48
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
49
+ s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
50
+ s.add_development_dependency(%q<rcov>, [">= 0"])
51
+ s.add_development_dependency(%q<fakeweb>, [">= 0"])
52
+ else
53
+ s.add_dependency(%q<addressable>, [">= 0"])
54
+ s.add_dependency(%q<yajl-ruby>, [">= 0"])
55
+ s.add_dependency(%q<rspec>, ["~> 2.3.0"])
56
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
57
+ s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
58
+ s.add_dependency(%q<rcov>, [">= 0"])
59
+ s.add_dependency(%q<fakeweb>, [">= 0"])
60
+ end
61
+ else
62
+ s.add_dependency(%q<addressable>, [">= 0"])
63
+ s.add_dependency(%q<yajl-ruby>, [">= 0"])
64
+ s.add_dependency(%q<rspec>, ["~> 2.3.0"])
65
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
66
+ s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
67
+ s.add_dependency(%q<rcov>, [">= 0"])
68
+ s.add_dependency(%q<fakeweb>, [">= 0"])
69
+ end
70
+ end
71
+
data/lib/kontoapi-ruby.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'addressable/uri'
2
+ require 'yajl/json_gem'
2
3
  require 'net/http'
3
4
  require 'net/https'
4
5
 
@@ -27,13 +28,15 @@ module KontoAPI
27
28
  end
28
29
 
29
30
  def valid?(account_number, bank_code)
30
- response = ask_for(:validity, { :ktn => account_number, :blz => bank_code })
31
- response[:answer].eql?('yes')
31
+ return false if account_number.to_s.strip.empty? || bank_code.to_s.strip.empty?
32
+ response = ask_for(:validity, { :ktn => account_number.to_s, :blz => bank_code.to_s })
33
+ response['answer'].eql?('yes')
32
34
  end
33
35
 
34
36
  def bank_name(bank_code)
35
- response = ask_for(:bankname, { :blz => bank_code })
36
- response[:answer]
37
+ return nil if bank_code.to_s.strip.empty?
38
+ response = ask_for(:bankname, { :blz => bank_code.to_s })
39
+ response['answer'].empty? ? nil : response['answer']
37
40
  end
38
41
 
39
42
 
@@ -46,7 +49,7 @@ module KontoAPI
46
49
  options.merge!( :key => api_key )
47
50
  url.query_values = options
48
51
  body = get_url(url)
49
- NibblerJSON.parse(body)
52
+ JSON.parse(body)
50
53
  end
51
54
 
52
55
  def get_url(url)
@@ -56,7 +59,8 @@ module KontoAPI
56
59
  # TODO include certs and enable SSL verification
57
60
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
58
61
  response = http.get url.request_uri, 'User-agent' => 'Konto API Ruby Client'
59
- if Net::HTTPSuccess == response
62
+ case response
63
+ when Net::HTTPSuccess, Net::HTTPOK
60
64
  response.body
61
65
  else
62
66
  response.error!
@@ -1,7 +1,61 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
- describe "KontoapiRuby" do
4
- it "fails" do
5
- fail "hey buddy, you should probably rename this file and start specing for real"
3
+ describe "KontoAPI" do
4
+
5
+ it "should raise if no api key was provided" do
6
+ lambda { KontoAPI::valid?('1234567', '12312312') }.should raise_error(RuntimeError)
7
+ end
8
+
9
+ it "should raise if api key is invalid" do
10
+ FakeWeb.register_uri(:get, %r|https://ask\.kontoapi\.de/for/validity.json?.*|, :body => '{"error":"unauthenticated"}', :status => ["401", "Unauthorized"])
11
+ KontoAPI::api_key = 'abc123'
12
+ lambda { KontoAPI::valid?('1234567', '12312312') }.should raise_error(Net::HTTPServerException)
13
+ end
14
+
15
+ context "checking validity" do
16
+
17
+ it "should return false if account number or bank code are empty" do
18
+ KontoAPI::valid?(nil, nil).should be_false
19
+ KontoAPI::valid?('123', nil).should be_false
20
+ KontoAPI::valid?(nil, '123').should be_false
21
+ KontoAPI::valid?('', '').should be_false
22
+ KontoAPI::valid?('123', '').should be_false
23
+ KontoAPI::valid?('', '123').should be_false
24
+ end
25
+
26
+ it "should return true for successfull validity checks" do
27
+ FakeWeb.register_uri(:get, %r|https://ask\.kontoapi\.de/for/validity.json?.*|, :body => '{"answer":"yes"}')
28
+ KontoAPI::api_key = 'abc123'
29
+ KontoAPI::valid?('correct_account_number', '12312312').should be_true
30
+ end
31
+
32
+ it "should return false for unsuccessfull validity checks" do
33
+ FakeWeb.register_uri(:get, %r|https://ask\.kontoapi\.de/for/validity.json?.*|, :body => '{"answer":"no"}')
34
+ KontoAPI::api_key = 'abc123'
35
+ KontoAPI::valid?('incorrect_account_number', '12312312').should be_false
36
+ end
37
+
38
+ end
39
+
40
+ context "getting bank names" do
41
+
42
+ it "should return nil if no bank code was provided" do
43
+ KontoAPI::bank_name(nil).should be_nil
44
+ KontoAPI::bank_name('').should be_nil
45
+ end
46
+
47
+ it "should return nil if no bank was found" do
48
+ FakeWeb.register_uri(:get, %r|https://ask\.kontoapi\.de/for/bankname.json?.*|, :body => '{"answer":""}')
49
+ KontoAPI::api_key = 'abc123'
50
+ KontoAPI::bank_name('12312312').should be_nil
51
+ end
52
+
53
+ it "should return Postbank for bank code 10010010" do
54
+ FakeWeb.register_uri(:get, %r|https://ask\.kontoapi\.de/for/bankname.json?.*|, :body => '{"answer":"Postbank"}')
55
+ KontoAPI::api_key = 'abc123'
56
+ KontoAPI::bank_name('10010010').should == "Postbank"
57
+ end
58
+
6
59
  end
60
+
7
61
  end
data/spec/spec_helper.rb CHANGED
@@ -2,6 +2,7 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
2
  $LOAD_PATH.unshift(File.dirname(__FILE__))
3
3
  require 'rspec'
4
4
  require 'kontoapi-ruby'
5
+ require 'fakeweb'
5
6
 
6
7
  # Requires supporting files with custom matchers and macros, etc,
7
8
  # in ./support/ and its subdirectories.
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kontoapi-ruby
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 0
9
8
  - 1
10
- version: 0.0.1
9
+ - 0
10
+ version: 0.1.0
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-17 00:00:00 Z
18
+ date: 2011-04-18 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: addressable
@@ -32,19 +32,17 @@ dependencies:
32
32
  type: :runtime
33
33
  version_requirements: *id001
34
34
  - !ruby/object:Gem::Dependency
35
- name: nibbler
35
+ name: yajl-ruby
36
36
  prerelease: false
37
37
  requirement: &id002 !ruby/object:Gem::Requirement
38
38
  none: false
39
39
  requirements:
40
40
  - - ">="
41
41
  - !ruby/object:Gem::Version
42
- hash: 31
42
+ hash: 3
43
43
  segments:
44
- - 1
45
- - 2
46
44
  - 0
47
- version: 1.2.0
45
+ version: "0"
48
46
  type: :runtime
49
47
  version_requirements: *id002
50
48
  - !ruby/object:Gem::Dependency
@@ -109,6 +107,20 @@ dependencies:
109
107
  version: "0"
110
108
  type: :development
111
109
  version_requirements: *id006
110
+ - !ruby/object:Gem::Dependency
111
+ name: fakeweb
112
+ prerelease: false
113
+ requirement: &id007 !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ hash: 3
119
+ segments:
120
+ - 0
121
+ version: "0"
122
+ type: :development
123
+ version_requirements: *id007
112
124
  description: A ruby library to access the Konto API (https://www.kontoapi.de/), a webservice that performs validity checks and other services regarding german bank accounts.
113
125
  email: jan@general-scripting.com
114
126
  executables: []
@@ -125,6 +137,7 @@ files:
125
137
  - README.markdown
126
138
  - Rakefile
127
139
  - VERSION
140
+ - kontoapi-ruby.gemspec
128
141
  - lib/kontoapi-ruby.rb
129
142
  - spec/kontoapi-ruby_spec.rb
130
143
  - spec/spec_helper.rb