hbci 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 +4 -4
- data/README.md +17 -13
- data/examples/credentials.rb +0 -4
- data/examples/get_accounts.rb +6 -4
- data/examples/get_balance.rb +4 -2
- data/examples/get_system_id.rb +3 -1
- data/examples/get_transactions.rb +6 -4
- data/lib/hbci/connector.rb +8 -7
- data/lib/hbci/dialog.rb +6 -6
- data/lib/hbci/message.rb +3 -2
- data/lib/hbci/message_factory.rb +2 -2
- data/lib/hbci/segments/hkidn.rb +2 -2
- data/lib/hbci/segments/hnhbk.rb +1 -1
- data/lib/hbci/segments/hnhbs.rb +1 -1
- data/lib/hbci/segments/hnsha.rb +1 -1
- data/lib/hbci/segments/hnshk.rb +2 -2
- data/lib/hbci/segments/hnvsk.rb +2 -2
- data/lib/hbci/services/balance_receiver.rb +2 -2
- data/lib/hbci/services/base_receiver.rb +3 -1
- data/lib/hbci/services/system_id_receiver.rb +8 -2
- data/lib/hbci/services/transactions_receiver.rb +2 -2
- data/lib/hbci/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d8863eaee26a37c3a6abe14db9196ffdded7a0c556ba1f16e96b9359b7c208a
|
4
|
+
data.tar.gz: 2384b7d356861ba1100e0ffe94da7818d209e06d380882a11b25e6e6c6b7c340
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6aa8166bb31112f62d23eeca4f43df2d3fe700885559b613444459f07d0efca42d091e5612b87f2b44394b652cc9a4fcbd7e5e4421744077a86ff80f5f1a02ac
|
7
|
+
data.tar.gz: 5e18b33710be68bba1b1688c02ad86ee2e46aba6a807671c9227d8f80c7137738c189260bfc4fe782ed3d6831217e0c111d78f7b208e781989bb0c0166098647
|
data/README.md
CHANGED
@@ -37,9 +37,6 @@ credentials = BankCredentials::Hbci.new({
|
|
37
37
|
user_id: 'user_id',
|
38
38
|
pin: 'pin'
|
39
39
|
})
|
40
|
-
|
41
|
-
connector = Hbci::Connector.instance
|
42
|
-
connector.credentials = credentials
|
43
40
|
```
|
44
41
|
|
45
42
|
Now, you can receive your balances, accounts and transactions:
|
@@ -51,10 +48,12 @@ iban = 'DE05740900000011111111'
|
|
51
48
|
start_date = 3.day.ago
|
52
49
|
end_date = Time.now
|
53
50
|
|
54
|
-
Hbci::
|
55
|
-
|
56
|
-
|
57
|
-
|
51
|
+
Hbci::Connector.open(credentials) do |connector|
|
52
|
+
Hbci::Dialog.open(connector) do |dialog|
|
53
|
+
transactions = Hbci::Services::TransactionsReceiver.new(connector, dialog, iban).perform(start_date, end_date)
|
54
|
+
transactions.each do |transaction|
|
55
|
+
puts transaction
|
56
|
+
end
|
58
57
|
end
|
59
58
|
end
|
60
59
|
```
|
@@ -64,20 +63,25 @@ end
|
|
64
63
|
```ruby
|
65
64
|
iban = 'DE05740900000011111111'
|
66
65
|
|
67
|
-
Hbci::
|
68
|
-
|
66
|
+
Hbci::Connector.open(credentials) do |connector|
|
67
|
+
Hbci::Dialog.open(connector) do |dialog|
|
68
|
+
puts Hbci::Services::BalanceReceiver.new(connector, dialog, iban).perform
|
69
|
+
end
|
69
70
|
end
|
70
71
|
```
|
71
72
|
|
72
73
|
### Receiving the accounts
|
73
74
|
|
74
75
|
```ruby
|
75
|
-
Hbci::
|
76
|
-
|
77
|
-
|
78
|
-
|
76
|
+
Hbci::Connector.open(credentials) do |connector|
|
77
|
+
Hbci::Dialog.open(connector) do |dialog|
|
78
|
+
accounts = Hbci::Services::AccountsReceiver.new(dialog).perform
|
79
|
+
accounts.each do |account|
|
80
|
+
puts account
|
81
|
+
end
|
79
82
|
end
|
80
83
|
end
|
84
|
+
|
81
85
|
```
|
82
86
|
## Banks tested
|
83
87
|
|
data/examples/credentials.rb
CHANGED
data/examples/get_accounts.rb
CHANGED
@@ -3,9 +3,11 @@
|
|
3
3
|
require_relative '../lib/hbci'
|
4
4
|
require_relative 'credentials'
|
5
5
|
|
6
|
-
Hbci::
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
Hbci::Connector.open(@credentials) do |connector|
|
7
|
+
Hbci::Dialog.open(connector, system_id: @options[:system_id]) do |dialog|
|
8
|
+
accounts = Hbci::Services::AccountsReceiver.new(dialog).perform
|
9
|
+
accounts.each do |account|
|
10
|
+
puts account
|
11
|
+
end
|
10
12
|
end
|
11
13
|
end
|
data/examples/get_balance.rb
CHANGED
@@ -3,6 +3,8 @@
|
|
3
3
|
require_relative '../lib/hbci'
|
4
4
|
require_relative 'credentials'
|
5
5
|
|
6
|
-
Hbci::
|
7
|
-
|
6
|
+
Hbci::Connector.open(@credentials) do |connector|
|
7
|
+
Hbci::Dialog.open(connector, system_id: @options[:system_id]) do |dialog|
|
8
|
+
puts Hbci::Services::BalanceReceiver.new(connector, dialog, @iban).perform
|
9
|
+
end
|
8
10
|
end
|
data/examples/get_system_id.rb
CHANGED
@@ -6,10 +6,12 @@ require_relative 'credentials'
|
|
6
6
|
start_date = 3.day.ago
|
7
7
|
end_date = Time.now
|
8
8
|
|
9
|
-
Hbci::
|
10
|
-
|
11
|
-
|
12
|
-
|
9
|
+
Hbci::Connector.open(@credentials) do |connector|
|
10
|
+
Hbci::Dialog.open(connector, system_id: @options[:system_id]) do |dialog|
|
11
|
+
transactions = Hbci::Services::TransactionsReceiver.new(connector, dialog, @iban, @hbci_version).perform(start_date, end_date)
|
12
|
+
transactions.each do |transaction|
|
13
|
+
puts transaction
|
14
|
+
end
|
13
15
|
end
|
14
16
|
end
|
15
17
|
|
data/lib/hbci/connector.rb
CHANGED
@@ -1,15 +1,16 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'singleton'
|
4
|
-
|
5
1
|
module Hbci
|
6
2
|
class Connector
|
7
|
-
include Singleton
|
8
|
-
|
9
3
|
attr_accessor :message_number
|
10
4
|
attr_reader :credentials
|
11
5
|
|
12
|
-
def
|
6
|
+
def self.open(credentials)
|
7
|
+
connector = new(credentials)
|
8
|
+
yield connector
|
9
|
+
connector.reset_message_number
|
10
|
+
end
|
11
|
+
|
12
|
+
def initialize(credentials)
|
13
|
+
self.credentials = credentials
|
13
14
|
reset_message_number
|
14
15
|
end
|
15
16
|
|
data/lib/hbci/dialog.rb
CHANGED
@@ -9,15 +9,15 @@ module Hbci
|
|
9
9
|
attr_reader :response
|
10
10
|
attr_reader :connector
|
11
11
|
|
12
|
-
def self.open(system_id: 0)
|
13
|
-
dialog = Dialog.new(system_id: system_id)
|
12
|
+
def self.open(connector, system_id: 0)
|
13
|
+
dialog = Dialog.new(connector, system_id: system_id)
|
14
14
|
dialog.initiate
|
15
15
|
yield dialog
|
16
16
|
dialog.finish
|
17
17
|
end
|
18
18
|
|
19
|
-
def initialize(system_id: 0)
|
20
|
-
@connector =
|
19
|
+
def initialize(connector, system_id: 0)
|
20
|
+
@connector = connector
|
21
21
|
@initiated = false
|
22
22
|
@hbci_version = '3.0'
|
23
23
|
@system_id = system_id
|
@@ -35,7 +35,7 @@ module Hbci
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def initiate
|
38
|
-
request_message = MessageFactory.build(self) do |hnvsd|
|
38
|
+
request_message = MessageFactory.build(@connector, self) do |hnvsd|
|
39
39
|
hnvsd.add_segment(Segments::HKIDNv2.new)
|
40
40
|
hnvsd.add_segment(Segments::HKVVBv3.new)
|
41
41
|
end
|
@@ -51,7 +51,7 @@ module Hbci
|
|
51
51
|
end
|
52
52
|
|
53
53
|
def finish
|
54
|
-
request_message = MessageFactory.build(self) do |hnvsd|
|
54
|
+
request_message = MessageFactory.build(@connector, self) do |hnvsd|
|
55
55
|
hnvsd.add_segment(Segments::HKENDv1.new)
|
56
56
|
end
|
57
57
|
request_message.compile
|
data/lib/hbci/message.rb
CHANGED
@@ -2,10 +2,11 @@
|
|
2
2
|
|
3
3
|
module Hbci
|
4
4
|
class Message
|
5
|
-
attr_reader :dialog, :segments, :sec_ref
|
5
|
+
attr_reader :connector, :dialog, :segments, :sec_ref
|
6
6
|
attr_accessor :next_position
|
7
7
|
|
8
|
-
def initialize(dialog = nil)
|
8
|
+
def initialize(connector, dialog = nil)
|
9
|
+
@connector = connector
|
9
10
|
@dialog = dialog
|
10
11
|
@sec_ref = generate_security_reference
|
11
12
|
@segments = []
|
data/lib/hbci/message_factory.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Hbci
|
2
2
|
module MessageFactory
|
3
|
-
def self.build(dialog)
|
4
|
-
request_message = Message.new(dialog)
|
3
|
+
def self.build(connector, dialog)
|
4
|
+
request_message = Message.new(connector, dialog)
|
5
5
|
request_message.add_segment(Segments::HNHBKv3.new)
|
6
6
|
request_message.add_segment(Segments::HNVSKv3.new)
|
7
7
|
hnvsd = Segments::HNVSDv1.new do |s|
|
data/lib/hbci/segments/hkidn.rb
CHANGED
@@ -13,8 +13,8 @@ module Hbci
|
|
13
13
|
element :state, default: 1
|
14
14
|
|
15
15
|
def compile
|
16
|
-
self.bank.code =
|
17
|
-
self.user_id =
|
16
|
+
self.bank.code = request_message.connector.credentials.bank_code
|
17
|
+
self.user_id = request_message.connector.credentials.user_id
|
18
18
|
self.system_id = request_message.dialog ? request_message.dialog.system_id : 0
|
19
19
|
end
|
20
20
|
end
|
data/lib/hbci/segments/hnhbk.rb
CHANGED
@@ -16,7 +16,7 @@ module Hbci
|
|
16
16
|
def compile
|
17
17
|
self.message_size = '000000000000'
|
18
18
|
self.dialog_id = request_message.dialog ? request_message.dialog.id : 0
|
19
|
-
self.message_number =
|
19
|
+
self.message_number = request_message.connector.message_number
|
20
20
|
end
|
21
21
|
|
22
22
|
def after_compile
|
data/lib/hbci/segments/hnhbs.rb
CHANGED
data/lib/hbci/segments/hnsha.rb
CHANGED
data/lib/hbci/segments/hnshk.rb
CHANGED
@@ -71,8 +71,8 @@ module Hbci
|
|
71
71
|
private
|
72
72
|
|
73
73
|
def set_credentials
|
74
|
-
key.bank_code =
|
75
|
-
key.user_id =
|
74
|
+
key.bank_code = request_message.connector.credentials.bank_code
|
75
|
+
key.user_id = request_message.connector.credentials.user_id
|
76
76
|
end
|
77
77
|
end
|
78
78
|
end
|
data/lib/hbci/segments/hnvsk.rb
CHANGED
@@ -52,8 +52,8 @@ module Hbci
|
|
52
52
|
def compile
|
53
53
|
head.position = 998
|
54
54
|
security_identification_details.party_identification = request_message.dialog ? request_message.dialog.system_id : 0
|
55
|
-
key.bank_code =
|
56
|
-
key.user_id =
|
55
|
+
key.bank_code = request_message.connector.credentials.bank_code
|
56
|
+
key.user_id = request_message.connector.credentials.user_id
|
57
57
|
end
|
58
58
|
end
|
59
59
|
end
|
@@ -4,12 +4,12 @@ module Hbci
|
|
4
4
|
module Services
|
5
5
|
class BalanceReceiver < BaseReceiver
|
6
6
|
def perform
|
7
|
-
request_message = MessageFactory.build(dialog) do |hnvsd|
|
7
|
+
request_message = MessageFactory.build(connector, dialog) do |hnvsd|
|
8
8
|
hnvsd.add_segment(build_hksal)
|
9
9
|
end
|
10
10
|
request_message.compile
|
11
11
|
|
12
|
-
@response = Response.new(
|
12
|
+
@response = Response.new(connector.post(request_message))
|
13
13
|
|
14
14
|
raise @response.to_s unless request_successful?
|
15
15
|
|
@@ -3,10 +3,12 @@
|
|
3
3
|
module Hbci
|
4
4
|
module Services
|
5
5
|
class BaseReceiver
|
6
|
+
attr_reader :connector
|
6
7
|
attr_reader :dialog
|
7
8
|
attr_reader :iban
|
8
9
|
|
9
|
-
def initialize(dialog, iban, version = nil)
|
10
|
+
def initialize(connector, dialog, iban, version = nil)
|
11
|
+
@connector = connector
|
10
12
|
@dialog = dialog
|
11
13
|
@iban = Ibanizator.iban_from_string(iban)
|
12
14
|
@version = version
|
@@ -3,15 +3,21 @@
|
|
3
3
|
module Hbci
|
4
4
|
module Services
|
5
5
|
class SystemIdReceiver
|
6
|
+
attr_reader :connector
|
7
|
+
|
8
|
+
def initialize(connector)
|
9
|
+
@connector = connector
|
10
|
+
end
|
11
|
+
|
6
12
|
def perform
|
7
|
-
request_message = MessageFactory.build(nil) do |hnvsd|
|
13
|
+
request_message = MessageFactory.build(connector, nil) do |hnvsd|
|
8
14
|
hnvsd.add_segment(Segments::HKIDNv2.new)
|
9
15
|
hnvsd.add_segment(Segments::HKVVBv3.new)
|
10
16
|
hnvsd.add_segment(Segments::HKSYNv3.new)
|
11
17
|
end
|
12
18
|
request_message.compile
|
13
19
|
|
14
|
-
@response = Response.new(
|
20
|
+
@response = Response.new(connector.post(request_message))
|
15
21
|
|
16
22
|
raise @response.to_s unless request_successful?
|
17
23
|
|
@@ -11,12 +11,12 @@ module Hbci
|
|
11
11
|
|
12
12
|
transactions = []
|
13
13
|
loop do
|
14
|
-
request_message = MessageFactory.build(dialog) do |hnvsd|
|
14
|
+
request_message = MessageFactory.build(connector, dialog) do |hnvsd|
|
15
15
|
hnvsd.add_segment(build_hkkaz)
|
16
16
|
end
|
17
17
|
request_message.compile
|
18
18
|
|
19
|
-
@response = Response.new(
|
19
|
+
@response = Response.new(connector.post(request_message))
|
20
20
|
|
21
21
|
raise @response.to_s unless request_successful?
|
22
22
|
|
data/lib/hbci/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hbci
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Roman Lehnert
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-
|
12
|
+
date: 2018-08-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bank_credentials
|