epics 2.7.0 → 2.9.0

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: 53a2a79b885cb022c062f828a88755b065c3e28610cf02b04520f8e3ec64379f
4
- data.tar.gz: 741c01e277edb80130af0da516fb0353c9966800695c601693d1fb970566e1a0
3
+ metadata.gz: cc38fae79ba6b5ebcbafa535bfd7b4364b708deff8d1d45caa44ed9273a338e1
4
+ data.tar.gz: 3a54d33face295d3f0718baeb6343d8aff05946b27aaf11f9df0871869e266bf
5
5
  SHA512:
6
- metadata.gz: 010ce5ba5b9582007e4408fb7fb26857a7ce90632dcd8c48bda1a96d9093a8387cae8a5b59695f7ca535df0a63b2a90922362c8b96c5fc72b8ca3e03e93f03f9
7
- data.tar.gz: 19c3bb2aab6ed308d3122609eb7bd94c4808e156cb2e9294ec77e5a94173af26977e6c8c28ca6dea8f64228cdf8a55a73db167f66dd6d48956bbc98644901d14
6
+ metadata.gz: 3827df11227abf25613c8b27356cbb45465d2be54b58421725bb9625338be4c1bedab8683c3b0f9e9630bc3a63700bfcc897fff130baae465475e53f5112aa43
7
+ data.tar.gz: 168a79d4581dcc1053a130081d70bf08741f7d7f96582863963653aab189f866c303b6c582d15584851443d5c65756139b3956ca81c3dfbf0715afc5ba3040ae
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  ### Unreleased
2
2
 
3
+ ### 2.9.0
4
+
5
+ - [ENHANCEMENT] Added HEV order type (thanks to @jplot)
6
+
7
+ ### 2.8.0
8
+
9
+ - [ENHANCEMENT] Added BKA order type
10
+
3
11
  ### 2.7.0
4
12
 
5
13
  - [ENHANCEMENT] Added FDL order type (thanks to @frantisekrokusek)
data/README.md CHANGED
@@ -10,7 +10,7 @@ It supports EBICS 2.5.
10
10
 
11
11
  The client supports the complete initialization process comprising INI, HIA and HPB including the
12
12
  INI letter generation. It offers support for the most common download and upload order types
13
- (STA HAA HTD HPD PTK HAC HKD C52 C53 C54 CD1 CDB CDD CCT VMK FDL).
13
+ (STA HAA HTD HPD PTK HAC HKD BKA C52 C53 C54 CD1 CDB CDD CCT VMK FDL).
14
14
 
15
15
  ## Installation
16
16
 
data/epics.gemspec CHANGED
@@ -44,6 +44,8 @@ Gem::Specification.new do |spec|
44
44
  spec.post_install_message += "Please create an issue on github (railslove/epics) if anything does not work as expected. And contact team@railslove.com if you are looking for support with your integration.\n"
45
45
  spec.post_install_message += "\e[32m" + ('*' * 60) + "\n\e[0m"
46
46
 
47
+ spec.add_dependency 'base64'
48
+ spec.add_dependency 'bigdecimal'
47
49
  spec.add_dependency 'faraday', '>= 1.10.0'
48
50
  spec.add_dependency 'i18n', '>= 1.1.0'
49
51
  spec.add_dependency 'nokogiri', '>= 1.16.7'
data/lib/epics/bka.rb ADDED
@@ -0,0 +1,17 @@
1
+ class Epics::BKA < Epics::GenericRequest
2
+ def header
3
+ client.header_request.build(
4
+ nonce: nonce,
5
+ timestamp: timestamp,
6
+ order_type: 'BKA',
7
+ order_attribute: 'DZHNN',
8
+ order_params: {
9
+ DateRange: {
10
+ Start: options[:from],
11
+ End: options[:to]
12
+ }
13
+ },
14
+ mutable: { TransactionPhase: 'Initialisation' }
15
+ )
16
+ end
17
+ end
data/lib/epics/client.rb CHANGED
@@ -107,6 +107,13 @@ class Epics::Client
107
107
  post(url, Epics::INI.new(self).to_xml).body.ok?
108
108
  end
109
109
 
110
+ def HEV
111
+ res = post(url, Epics::HEV.new(self).to_xml).body
112
+ res.doc.xpath("//xmlns:VersionNumber", xmlns: 'http://www.ebics.org/H000').each_with_object({}) do |node, versions|
113
+ versions[node['ProtocolVersion']] = node.content
114
+ end
115
+ end
116
+
110
117
  def HPB
111
118
  Nokogiri::XML(download(Epics::HPB)).xpath("//xmlns:PubKeyValue", xmlns: "urn:org:ebics:H004").each do |node|
112
119
  type = node.parent.last_element_child.content
@@ -198,6 +205,10 @@ class Epics::Client
198
205
  download_and_unzip(Epics::CRZ, from: from, to: to)
199
206
  end
200
207
 
208
+ def BKA(from, to)
209
+ download_and_unzip(Epics::BKA, from: from, to: to)
210
+ end
211
+
201
212
  def C52(from, to)
202
213
  download_and_unzip(Epics::C52, from: from, to: to)
203
214
  end
data/lib/epics/hev.rb ADDED
@@ -0,0 +1,19 @@
1
+ class Epics::HEV < Epics::GenericRequest
2
+ def root
3
+ "ebicsHEVRequest"
4
+ end
5
+
6
+ def body
7
+ Nokogiri::XML::Builder.new do |xml|
8
+ xml.HostID host_id
9
+ end.doc.root
10
+ end
11
+
12
+ def to_xml
13
+ Nokogiri::XML::Builder.new do |xml|
14
+ xml.send(root, 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance', 'xsi:schemaLocation' => 'http://www.ebics.org/H000 http://www.ebics.org/H000/ebics_hev.xsd', 'xmlns' => 'http://www.ebics.org/H000') {
15
+ xml.parent.add_child(body)
16
+ }
17
+ end.to_xml(save_with: Nokogiri::XML::Node::SaveOptions::AS_XML, encoding: 'utf-8')
18
+ end
19
+ end
@@ -12,9 +12,17 @@ class Epics::Response
12
12
  end
13
13
 
14
14
  def technical_code
15
+ mutable_return_code.empty? ? system_return_code : mutable_return_code
16
+ end
17
+
18
+ def mutable_return_code
15
19
  doc.xpath("//xmlns:header/xmlns:mutable/xmlns:ReturnCode", xmlns: "urn:org:ebics:H004").text
16
20
  end
17
21
 
22
+ def system_return_code
23
+ doc.xpath("//xmlns:SystemReturnCode/xmlns:ReturnCode", xmlns: 'http://www.ebics.org/H000').text
24
+ end
25
+
18
26
  def business_error?
19
27
  !["", "000000"].include?(business_code)
20
28
  end
data/lib/epics/signer.rb CHANGED
@@ -17,7 +17,7 @@ class Epics::Signer
17
17
  end
18
18
 
19
19
  def sign!
20
- signature_value_node = doc.xpath("//ds:SignatureValue").first
20
+ signature_value_node = doc.xpath("//ds:SignatureValue", ds: "http://www.w3.org/2000/09/xmldsig#").first
21
21
 
22
22
  if signature_node
23
23
  signature_value_node.content = Base64.encode64(client.x.key.sign(digester, signature_node.canonicalize)).gsub(/\n/,'')
@@ -27,11 +27,11 @@ class Epics::Signer
27
27
  end
28
28
 
29
29
  def digest_node
30
- @d ||= doc.xpath("//ds:DigestValue").first
30
+ @d ||= doc.xpath("//ds:DigestValue", ds: "http://www.w3.org/2000/09/xmldsig#").first
31
31
  end
32
32
 
33
33
  def signature_node
34
- @s ||= doc.xpath("//ds:SignedInfo").first
34
+ @s ||= doc.xpath("//ds:SignedInfo", ds: "http://www.w3.org/2000/09/xmldsig#").first
35
35
  end
36
36
 
37
37
  def digester
data/lib/epics/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Epics
4
- VERSION = '2.7.0'
4
+ VERSION = '2.9.0'
5
5
  end
data/lib/epics.rb CHANGED
@@ -27,6 +27,7 @@ require "epics/haa"
27
27
  require "epics/sta"
28
28
  require "epics/fdl"
29
29
  require "epics/vmk"
30
+ require "epics/bka"
30
31
  require "epics/c52"
31
32
  require "epics/c53"
32
33
  require "epics/c54"
@@ -55,6 +56,7 @@ require "epics/crz"
55
56
  require "epics/xct"
56
57
  require "epics/hia"
57
58
  require "epics/ini"
59
+ require "epics/hev"
58
60
  require "epics/signer"
59
61
  require "epics/client"
60
62
 
@@ -0,0 +1,11 @@
1
+ RSpec.describe Epics::BKA do
2
+
3
+ let(:client) { Epics::Client.new( File.open(File.join( File.dirname(__FILE__), '..', 'fixtures', 'SIZBN001.key')), 'secret' , 'https://194.180.18.30/ebicsweb/ebicsweb', 'SIZBN001', 'EBIX', 'EBICS') }
4
+
5
+ subject { described_class.new(client, from: "2014-09-01", to: "2014-09-30") }
6
+
7
+ describe '#to_xml' do
8
+ specify { expect(subject.to_xml).to be_a_valid_ebics_doc }
9
+ end
10
+
11
+ end
@@ -0,0 +1,14 @@
1
+ RSpec.describe Epics::HEV do
2
+
3
+ let(:client) { Epics::Client.new( File.open(File.join( File.dirname(__FILE__), '..', 'fixtures', 'SIZBN001.key')), 'secret' , 'https://194.180.18.30/ebicsweb/ebicsweb', 'SIZBN001', 'EBIX', 'EBICS') }
4
+
5
+ let(:xsd) { Nokogiri::XML::Schema(File.open( File.join( File.dirname(__FILE__), '..', 'xsd', 'ebics_hev.xsd') )) }
6
+ let(:validator) { xsd.valid?(Nokogiri::XML(subject.to_xml)) }
7
+
8
+ subject { described_class.new(client) }
9
+
10
+ describe '#to_xml' do
11
+ specify { expect(validator).to be_truthy }
12
+ end
13
+
14
+ end
metadata CHANGED
@@ -1,15 +1,42 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: epics
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.0
4
+ version: 2.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lars Brillert
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-12-31 00:00:00.000000000 Z
10
+ date: 2025-03-24 00:00:00.000000000 Z
12
11
  dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: base64
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: bigdecimal
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
13
40
  - !ruby/object:Gem::Dependency
14
41
  name: faraday
15
42
  requirement: !ruby/object:Gem::Requirement
@@ -198,6 +225,7 @@ files:
198
225
  - lib/epics.rb
199
226
  - lib/epics/azv.rb
200
227
  - lib/epics/b2b.rb
228
+ - lib/epics/bka.rb
201
229
  - lib/epics/c2s.rb
202
230
  - lib/epics/c52.rb
203
231
  - lib/epics/c53.rb
@@ -220,6 +248,7 @@ files:
220
248
  - lib/epics/haa.rb
221
249
  - lib/epics/hac.rb
222
250
  - lib/epics/header_request.rb
251
+ - lib/epics/hev.rb
223
252
  - lib/epics/hia.rb
224
253
  - lib/epics/hkd.rb
225
254
  - lib/epics/hpb.rb
@@ -294,6 +323,7 @@ files:
294
323
  - spec/middleware/parse_ebics_spec.rb
295
324
  - spec/orders/azv_spec.rb
296
325
  - spec/orders/b2b_spec.rb
326
+ - spec/orders/bka_spec.rb
297
327
  - spec/orders/c2s_spec.rb
298
328
  - spec/orders/c52_spec.rb
299
329
  - spec/orders/c53_spec.rb
@@ -310,6 +340,7 @@ files:
310
340
  - spec/orders/fdl_spec.rb
311
341
  - spec/orders/haa_spec.rb
312
342
  - spec/orders/hac_spec.rb
343
+ - spec/orders/hev_spec.rb
313
344
  - spec/orders/hia_spec.rb
314
345
  - spec/orders/hkd_spec.rb
315
346
  - spec/orders/hpb_spec.rb
@@ -368,8 +399,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
368
399
  - !ruby/object:Gem::Version
369
400
  version: '0'
370
401
  requirements: []
371
- rubygems_version: 3.5.22
372
- signing_key:
402
+ rubygems_version: 3.6.2
373
403
  specification_version: 4
374
404
  summary: a ruby implementation of the EBICS protocol
375
405
  test_files:
@@ -419,6 +449,7 @@ test_files:
419
449
  - spec/middleware/parse_ebics_spec.rb
420
450
  - spec/orders/azv_spec.rb
421
451
  - spec/orders/b2b_spec.rb
452
+ - spec/orders/bka_spec.rb
422
453
  - spec/orders/c2s_spec.rb
423
454
  - spec/orders/c52_spec.rb
424
455
  - spec/orders/c53_spec.rb
@@ -435,6 +466,7 @@ test_files:
435
466
  - spec/orders/fdl_spec.rb
436
467
  - spec/orders/haa_spec.rb
437
468
  - spec/orders/hac_spec.rb
469
+ - spec/orders/hev_spec.rb
438
470
  - spec/orders/hia_spec.rb
439
471
  - spec/orders/hkd_spec.rb
440
472
  - spec/orders/hpb_spec.rb