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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ce916948b36a1f61620a4b24e65427e49a03ba97e023564089b746d7bd401e4d
4
- data.tar.gz: c37152dfaa3c4c780d15b4e26fa12823bea19ba62a54561fa0ee6121f079f6c2
3
+ metadata.gz: 6d8863eaee26a37c3a6abe14db9196ffdded7a0c556ba1f16e96b9359b7c208a
4
+ data.tar.gz: 2384b7d356861ba1100e0ffe94da7818d209e06d380882a11b25e6e6c6b7c340
5
5
  SHA512:
6
- metadata.gz: 7525c7cd7bbd0172a0ecf21c16833d92dbc16355eee232a1cde22eaa039578cd54a723046765dbf36ed68da97cb021ec91574ce09e742e19fd272095c204b890
7
- data.tar.gz: 269ac9f6aed0b1238bc2eeb54ddd52d6501169cdc94f6f94215c9d1f260044dfd6091e822ad632c7ebdef20b403870718ddc0ebe391dc2d09d0c84772419334e
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::Dialog.open do |dialog|
55
- transactions = Hbci::Services::TransactionsReceiver.new(dialog, iban).perform(start_date, end_date)
56
- transactions.each do |transaction|
57
- puts transaction
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::Dialog.open do |dialog|
68
- puts Hbci::Services::BalanceReceiver.new(dialog, iban).perform
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::Dialog.open do |dialog|
76
- accounts = Hbci::Services::AccountsReceiver.new(dialog).perform
77
- accounts.each do |account|
78
- puts account
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
 
@@ -51,7 +51,3 @@ raise 'missing iban' unless @iban
51
51
  user_id: @options[:user_id],
52
52
  pin: @options[:pin]
53
53
  )
54
-
55
- connector = Hbci::Connector.instance
56
- connector.credentials = @credentials
57
-
@@ -3,9 +3,11 @@
3
3
  require_relative '../lib/hbci'
4
4
  require_relative 'credentials'
5
5
 
6
- Hbci::Dialog.open(system_id: @options[:system_id]) do |dialog|
7
- accounts = Hbci::Services::AccountsReceiver.new(dialog).perform
8
- accounts.each do |account|
9
- puts account
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
@@ -3,6 +3,8 @@
3
3
  require_relative '../lib/hbci'
4
4
  require_relative 'credentials'
5
5
 
6
- Hbci::Dialog.open(system_id: @options[:system_id]) do |dialog|
7
- puts Hbci::Services::BalanceReceiver.new(dialog, @iban).perform
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
@@ -3,4 +3,6 @@
3
3
  require_relative '../lib/hbci'
4
4
  require_relative 'credentials'
5
5
 
6
- puts Hbci::Services::SystemIdReceiver.new.perform
6
+ Hbci::Connector.open(@credentials) do |connector|
7
+ puts Hbci::Services::SystemIdReceiver.new(connector).perform
8
+ end
@@ -6,10 +6,12 @@ require_relative 'credentials'
6
6
  start_date = 3.day.ago
7
7
  end_date = Time.now
8
8
 
9
- Hbci::Dialog.open(system_id: @options[:system_id]) do |dialog|
10
- transactions = Hbci::Services::TransactionsReceiver.new(dialog, @iban, @hbci_version).perform(start_date, end_date)
11
- transactions.each do |transaction|
12
- puts transaction
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
 
@@ -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 initialize
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
 
@@ -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 = Connector.instance
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
@@ -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 = []
@@ -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|
@@ -13,8 +13,8 @@ module Hbci
13
13
  element :state, default: 1
14
14
 
15
15
  def compile
16
- self.bank.code = Connector.instance.credentials.bank_code
17
- self.user_id = Connector.instance.credentials.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
@@ -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 = Connector.instance.message_number
19
+ self.message_number = request_message.connector.message_number
20
20
  end
21
21
 
22
22
  def after_compile
@@ -7,7 +7,7 @@ module Hbci
7
7
  element :message_number
8
8
 
9
9
  def compile
10
- self.message_number = Connector.instance.message_number
10
+ self.message_number = request_message.connector.message_number
11
11
  end
12
12
  end
13
13
  end
@@ -24,7 +24,7 @@ module Hbci
24
24
 
25
25
  def compile
26
26
  self.security_reference = request_message.sec_ref
27
- signature.pin = Connector.instance.credentials.pin
27
+ signature.pin = request_message.connector.credentials.pin
28
28
  end
29
29
  end
30
30
  end
@@ -71,8 +71,8 @@ module Hbci
71
71
  private
72
72
 
73
73
  def set_credentials
74
- key.bank_code = Connector.instance.credentials.bank_code
75
- key.user_id = Connector.instance.credentials.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
@@ -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 = Connector.instance.credentials.bank_code
56
- key.user_id = Connector.instance.credentials.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(Connector.instance.post(request_message))
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(Connector.instance.post(request_message))
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(Connector.instance.post(request_message))
19
+ @response = Response.new(connector.post(request_message))
20
20
 
21
21
  raise @response.to_s unless request_successful?
22
22
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Hbci
4
- VERSION = '0.3.0'
4
+ VERSION = '0.3.1'
5
5
  end
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.0
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-07-30 00:00:00.000000000 Z
12
+ date: 2018-08-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bank_credentials