epics 1.7.1 → 1.7.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0cf646dc0ea923f4e7f5846755a2040471b16a3fb955f609093f3e55d499ef68
4
- data.tar.gz: 1678882aa4ea27b878f692607b8f84b92e9d094a7c9dd93cfd1bb0d649b7c639
3
+ metadata.gz: 16a3bb74f8943c4f82b808e830e2306d2af5bfb80e80a4985ca47760b8e6a28f
4
+ data.tar.gz: 2ae911622605fb2965431fd7fb78f16e97e4bf1151fe0ec0f47c30632015a125
5
5
  SHA512:
6
- metadata.gz: 4b8efb42f871895126c0616dde21bcb5bd2fbd7cad0aa4b1f666192903517c9fb95df20cdd997f44fded94e858e8db515bc5510e879c7b25217fc35fd3fab5d0
7
- data.tar.gz: 52a30f3d601dd5536abe79e18fab70107b803496173a664f3b0c437612fb9e8c8fa97049412fff4de1f67551dc9563d1c2be643600812973650288ca8081d3aa
6
+ metadata.gz: 3ca8b3806e14e95aeed7576b48aebe5c04c7cbfac8e524f9e89da93716735533567d8c20529934d2bb65875b9db828318639f2d5ede1592cd53f210b41e6e398
7
+ data.tar.gz: 7c8f67d58425a6dc8ce16427c89960d50ecc55f4ee18880c2012655d4f271df719dca55c955ce04da3ccd8a12e4a104b30b948af38f029884947a2484d99491b
@@ -1,3 +1,7 @@
1
+ ### 1.7.2
2
+
3
+ - [FEATURE] adds XCT order type (thanks to @punkle64)
4
+
1
5
  ### 1.7.1
2
6
 
3
7
  - [HOUSEKEEPING] sets headers for requests to text/xml
data/README.md CHANGED
@@ -10,7 +10,6 @@ The client supports the complete initialization process comprising INI, HIA and
10
10
  INI letter generation. It offers support for the most common download and upload order types
11
11
  (STA HAA HTD HPD PTK HAC HKD C52 C53 C54 CD1 CDB CDD CCT VMK).
12
12
 
13
-
14
13
  ## Installation
15
14
 
16
15
  Add this line to your application's Gemfile:
@@ -23,7 +22,6 @@ Or install it yourself as:
23
22
 
24
23
  $ gem install epics
25
24
 
26
-
27
25
  ## Getting started
28
26
 
29
27
  In case you are new to EBICS, you'll have to complete an initialization process with
@@ -33,10 +31,10 @@ bank.
33
31
 
34
32
  Once the paperwork is done, your bank should provide you with:
35
33
 
36
- * _a_ URL to their EBICS Server
37
- * _a_ HOST ID
38
- * _a_ PARTNER ID
39
- * _n_ User IDs (depends on your bank and needs)
34
+ - _a_ URL to their EBICS Server
35
+ - _a_ HOST ID
36
+ - _a_ PARTNER ID
37
+ - _n_ User IDs (depends on your bank and needs)
40
38
 
41
39
  Take these parameters and start setting up an UserID (repeat this for every user you want to initialize):
42
40
 
@@ -51,7 +49,7 @@ e.save_keys("/home/epics/my.key")
51
49
  # or store the json elsewhere, but store it! for gods sake :D
52
50
  ```
53
51
 
54
- It is really __important__ to keep your keys around, once your user has been initialized
52
+ It is really **important** to keep your keys around, once your user has been initialized
55
53
  you'll have to start over when you loose the keys!
56
54
 
57
55
  Submit the keys to your bank:
@@ -93,15 +91,13 @@ e.HAA
93
91
 
94
92
  To get a list of all supported order types.
95
93
 
96
-
97
94
  ## Need help? Having questions?
98
95
 
99
96
  We have many years of experience in developing innovative applications for the finance sector and
100
97
  integrating applications with financial institutions. - you might want to have a look at our
101
98
  [portfolio](http://www.railslove.com/portfolio)
102
- __If you need help we are happy to provide consulting or development services. Contact us:
103
- [team@railslove.com](mailto:team@railslove.com)__
104
-
99
+ **If you need help we are happy to provide consulting or development services. Contact us:
100
+ [team@railslove.com](mailto:team@railslove.com)**
105
101
 
106
102
  ## Usage
107
103
 
@@ -117,27 +113,26 @@ keys = File.read('/tmp/my.key')
117
113
  e = Epics::Client.new(keys, 'passphrase', 'url', 'host', 'user', 'partner')
118
114
  ```
119
115
 
120
-
121
116
  ## Features
122
117
 
123
118
  ### Initialization
124
119
 
125
- * INI (Sends the public key of the electronic signature.)
126
- * HIA (Sends the public authentication (X002) and encryption (E002) keys.)
120
+ - INI (Sends the public key of the electronic signature.)
121
+ - HIA (Sends the public authentication (X002) and encryption (E002) keys.)
127
122
 
128
123
  ### Downloads
129
124
 
130
125
  Currently this EPICS implementation supports the following order types:
131
126
 
132
- * HPB (fetch your bank's public keys)
133
- * STA (statements in MT940 format)
134
- * HAA (available order types)
135
- * HTD (user properties and settings)
136
- * HPD (the available bank parameters)
137
- * PTK (customer usage report in text format)
138
- * HAC (customer usage report in xml format)
139
- * VMK (customer usage report in xml format)
140
- * ... more coming soon
127
+ - HPB (fetch your bank's public keys)
128
+ - STA (statements in MT940 format)
129
+ - HAA (available order types)
130
+ - HTD (user properties and settings)
131
+ - HPD (the available bank parameters)
132
+ - PTK (customer usage report in text format)
133
+ - HAC (customer usage report in xml format)
134
+ - VMK (customer usage report in xml format)
135
+ - ... more coming soon
141
136
 
142
137
  Example:
143
138
 
@@ -165,11 +160,11 @@ puts e.STA('2014-09-01', '2014-09-11')
165
160
 
166
161
  ### Uploads
167
162
 
168
- * CD1 (Uploads a SEPA Direct Debit document of type COR1)
169
- * CDB (Uploads a SEPA Direct Debit document of type B2B)
170
- * CDD (Uploads a SEPA Direct Debit document of type CORE)
171
- * CCT (Uploads a SEPA Credit document)
172
- * ... more coming soon
163
+ - CD1 (Uploads a SEPA Direct Debit document of type COR1)
164
+ - CDB (Uploads a SEPA Direct Debit document of type B2B)
165
+ - CDD (Uploads a SEPA Direct Debit document of type CORE)
166
+ - CCT (Uploads a SEPA Credit document)
167
+ - ... more coming soon
173
168
 
174
169
  Example:
175
170
 
@@ -187,22 +182,19 @@ puts e.CD1(File.read("/where/the/xml/is/stored.xml"))
187
182
  Once you have a client, go ahead and start playing! There are 3 convenience methods
188
183
  that are hiding some strange names from you:
189
184
 
190
- * debit( _xml_ ) (submits a PAIN.008.003.02 document via CDD)
191
- * credit( _xml_ ) (submits a pain.001.003.03 document)
192
- * statements( _from_, _to_ ) (fetches an account statement via STA)
185
+ - debit( _xml_ ) (submits a PAIN.008.003.02 document via CDD)
186
+ - credit( _xml_ ) (submits a pain.001.003.03 document)
187
+ - statements( _from_, _to_ ) (fetches an account statement via STA)
193
188
 
194
189
  If you need more sophisticated EBICS order types, please read the next section
195
190
  about the supported functionalities.
196
191
 
197
-
198
192
  ## Issues and Feature Requests
199
193
 
200
194
  [Railslove](http://railslove.com) is commited to provide the best developer tools for integrating
201
195
  with financial institutions. Epics is one of our many tools and services.
202
196
  If you are missing some features or something is not working as expected please create an issue.
203
197
 
204
-
205
-
206
198
  ## Supported Banks
207
199
 
208
200
  This gem provides a full implementation of the Electronic Banking Internet Communication Standard
@@ -212,26 +204,25 @@ what order types are available.
212
204
  Besides EBCIS being a standard, some server implementations are slighty different.
213
205
  But most banks use the same EBICS server implementations. Commonly used and supported by Epics are:
214
206
 
215
- * Business-Logics EBICS, Banking-Server
216
- * Travic Corporate
207
+ - Business-Logics EBICS, Banking-Server
208
+ - Travic Corporate
217
209
 
218
210
  Used for example by the following tested institutions:
219
211
 
220
- * Handelsbank
221
- * Deutsche Bank
222
- * Commerzbank
223
- * Kreissparkasse Mayen
224
- * Postbank
225
- * Sozialbank
226
- * Sparkassen
227
- * Volksbanken Raiffeisenbanken
228
- * Hypo Vereinsbank
229
- * BAWAG P.S.K. (AT)
230
- * Bank Frick (LI)
212
+ - Handelsbank
213
+ - Deutsche Bank
214
+ - Commerzbank
215
+ - Kreissparkasse Mayen
216
+ - Postbank
217
+ - Sozialbank
218
+ - Sparkassen
219
+ - Volksbanken Raiffeisenbanken
220
+ - Hypo Vereinsbank
221
+ - BAWAG P.S.K. (AT)
222
+ - Bank Frick (LI)
231
223
 
232
224
  Is Epics working with your institution? Please help us to grow this list of supported banks:
233
225
 
234
-
235
226
  ## Development
236
227
 
237
228
  For development purposes, you may want to use a proxy server in order to have a convienent look into request and response data.
@@ -239,6 +230,7 @@ To do so, it's sufficient to define `http_proxy` in your environment.
239
230
  Also you may want to disable SSL verification - simply set `EPICS_VERIFY_SSL` to `"false"`.
240
231
 
241
232
  For example:
233
+
242
234
  ```
243
235
  http_proxy=localhost:8080
244
236
  EPICS_VERIFY_SSL=false
@@ -246,21 +238,30 @@ EPICS_VERIFY_SSL=false
246
238
 
247
239
  ## Links
248
240
 
249
- * [ebics.de](http://www.ebics.de/)
250
- * [EBICS specification](http://www.ebics.de/index.php?id=30)
251
- * [Common Integrative Implementation Guide to Supplement the EBICS Specification (pdf)](http://www.ebics.de/fileadmin/unsecured/specification/implementation_guide_DE/EBICS_Common_IG_basiert_auf_EBICS_2.5.pdf)
252
- * [Die Deutsche Kreditwirtschaft](http://www.die-deutsche-kreditwirtschaft.de/)
253
-
241
+ - [ebics.de](http://www.ebics.de/)
242
+ - [EBICS specification](http://www.ebics.de/index.php?id=30)
243
+ - [Common Integrative Implementation Guide to Supplement the EBICS Specification (pdf)](http://www.ebics.de/fileadmin/unsecured/specification/implementation_guide_DE/EBICS_Common_IG_basiert_auf_EBICS_2.5.pdf)
244
+ - [Die Deutsche Kreditwirtschaft](http://www.die-deutsche-kreditwirtschaft.de/)
254
245
 
255
246
  ## Contributing
256
247
 
257
248
  0. Contact team@railslove.com for information about the CLA
258
249
  1. Fork it ( https://github.com/[my-github-username]/epics/fork )
259
- 2. Create your feature branch (`git checkout -b my-new-feature`)
260
- 3. Commit your changes (`git commit -am 'Add some feature'`)
261
- 4. Push to the branch (`git push origin my-new-feature`)
262
- 5. Create a new Pull Request
250
+ 1. Create your feature branch (`git checkout -b my-new-feature`)
251
+ 1. Commit your changes (`git commit -am 'Add some feature'`)
252
+ 1. Push to the branch (`git push origin my-new-feature`)
253
+ 1. Create a new Pull Request
254
+
255
+ ## Contribution Credits
256
+
257
+ - [@punkle64](https://github.com/punkle64) \
258
+ for adding XCT order type
259
+ - [@romanlehnert](https://github.com/romanlehnert) \
260
+ for adding CDB order type
261
+ - [@gadimbaylisahil](https://github.com/gadimbaylisahil) \
262
+ for fixing CCS order type and attribute
263
+ - you, for contributing too!
263
264
 
265
+ ---
264
266
 
265
- ------------
266
267
  2014-2018 - built with love by [Railslove](http://railslove.com) and released under the [GNU LESSER GENERAL PUBLIC LICENSE](https://github.com/railslove/epics/blob/master/LICENSE.txt). We have built quite a number of FinTech products. If you need support we are happy to help. Please contact us at team@railslove.com.
@@ -36,8 +36,10 @@ require "epics/ccs"
36
36
  require "epics/cdb"
37
37
  require "epics/cdd"
38
38
  require "epics/b2b"
39
+ require "epics/xds"
39
40
  require "epics/cds"
40
41
  require "epics/cdz"
42
+ require "epics/xct"
41
43
  require "epics/hia"
42
44
  require "epics/ini"
43
45
  require "epics/signer"
@@ -139,6 +139,10 @@ class Epics::Client
139
139
  upload(Epics::CDS, document)
140
140
  end
141
141
 
142
+ def XDS(document)
143
+ upload(Epics::XDS, document)
144
+ end
145
+
142
146
  def CDZ(document)
143
147
  upload(Epics::CDZ, document)
144
148
  end
@@ -151,6 +155,10 @@ class Epics::Client
151
155
  upload(Epics::CCS, document)
152
156
  end
153
157
 
158
+ def XCT(document)
159
+ upload(Epics::XCT, document)
160
+ end
161
+
154
162
  def STA(from = nil, to = nil)
155
163
  download(Epics::STA, from, to)
156
164
  end
@@ -177,9 +185,9 @@ class Epics::Client
177
185
 
178
186
  def HTD
179
187
  Nokogiri::XML(download(Epics::HTD)).tap do |htd|
180
- @iban ||= htd.at_xpath("//xmlns:AccountNumber[@international='true']", xmlns: "urn:org:ebics:H004").text
181
- @bic ||= htd.at_xpath("//xmlns:BankCode[@international='true']", xmlns: "urn:org:ebics:H004").text
182
- @name ||= htd.at_xpath("//xmlns:Name", xmlns: "urn:org:ebics:H004").text
188
+ @iban ||= htd.at_xpath("//xmlns:AccountNumber[@international='true']", xmlns: "urn:org:ebics:H004").text rescue nil
189
+ @bic ||= htd.at_xpath("//xmlns:BankCode[@international='true']", xmlns: "urn:org:ebics:H004").text rescue nil
190
+ @name ||= htd.at_xpath("//xmlns:Name", xmlns: "urn:org:ebics:H004").text rescue nil
183
191
  @order_types ||= htd.search("//xmlns:OrderTypes", xmlns: "urn:org:ebics:H004").map{|o| o.content.split(/\s/) }.delete_if{|o| o == ""}.flatten
184
192
  end.to_xml
185
193
  end
@@ -333,4 +333,5 @@ class Epics::Error < StandardError
333
333
  }
334
334
  end
335
335
 
336
- end
336
+ end
337
+ class Epics::Error::UnknownError < StandardError; end
@@ -1,15 +1,20 @@
1
- class Epics::ParseEbics < Faraday::Middleware
1
+ # frozen_string_literal: true
2
2
 
3
+ class Epics::ParseEbics < Faraday::Middleware
3
4
  def initialize(app = nil, options = {})
4
5
  super(app)
5
6
  @client = options[:client]
6
7
  end
7
8
 
8
9
  def call(env)
9
- @app.call(env).on_complete do |env|
10
- env[:body] = ::Epics::Response.new(@client, env[:body])
11
- raise Epics::Error::TechnicalError.new(env[:body].technical_code) if env[:body].technical_error?
12
- raise Epics::Error::BusinessError.new(env[:body].business_code) if env[:body].business_error?
10
+ @app.call(env).on_complete do |response|
11
+ response[:body] = ::Epics::Response.new(@client, response[:body])
12
+ raise Epics::Error::TechnicalError, response[:body].technical_code if response[:body].technical_error?
13
+ raise Epics::Error::BusinessError, response[:body].business_code if response[:body].business_error?
13
14
  end
15
+ rescue Epics::Error::TechnicalError, Epics::Error::BusinessError
16
+ raise # re-raise as otherwise they would be swallowed by the following rescue
17
+ rescue StandardError => e
18
+ raise Epics::Error::UnknownError, e
14
19
  end
15
20
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Epics
4
- VERSION = '1.7.1'
4
+ VERSION = '1.7.2'
5
5
  end
@@ -0,0 +1,30 @@
1
+ class Epics::XCT < Epics::GenericUploadRequest
2
+ def header
3
+ Nokogiri::XML::Builder.new do |xml|
4
+ xml.header(authenticate: true) {
5
+ xml.static {
6
+ xml.HostID host_id
7
+ xml.Nonce nonce
8
+ xml.Timestamp timestamp
9
+ xml.PartnerID partner_id
10
+ xml.UserID user_id
11
+ xml.Product("EPICS - a ruby ebics kernel", 'Language' => 'de')
12
+ xml.OrderDetails {
13
+ xml.OrderType 'XCT'
14
+ xml.OrderAttribute 'OZHNN'
15
+ xml.StandardOrderParams
16
+ }
17
+ xml.BankPubKeyDigests {
18
+ xml.Authentication(client.bank_x.public_digest, Version: 'X002', Algorithm: "http://www.w3.org/2001/04/xmlenc#sha256")
19
+ xml.Encryption(client.bank_e.public_digest, Version: 'E002', Algorithm: "http://www.w3.org/2001/04/xmlenc#sha256" )
20
+ }
21
+ xml.SecurityMedium '0000'
22
+ xml.NumSegments 1
23
+ }
24
+ xml.mutable {
25
+ xml.TransactionPhase 'Initialisation'
26
+ }
27
+ }
28
+ end.doc.root
29
+ end
30
+ end
@@ -0,0 +1,5 @@
1
+ class Epics::XDS < Epics::CDD
2
+ def order_type
3
+ 'XDS'
4
+ end
5
+ end
@@ -197,6 +197,16 @@ RSpec.describe Epics::Client do
197
197
  it 'sets @order_types' do
198
198
  expect { subject.HTD }.to change { subject.instance_variable_get("@order_types") }
199
199
  end
200
+
201
+ describe 'without iban' do
202
+ before do
203
+ allow(subject).to receive(:download).and_return( File.read(File.join(File.dirname(__FILE__), 'fixtures', 'xml', 'htd_order_data_without_names.xml')))
204
+ end
205
+
206
+ it 'sets @iban' do
207
+ expect(subject.iban).to be_nil
208
+ end
209
+ end
200
210
  end
201
211
 
202
212
  describe '#C53/C52/C54 types with zipped data' do
@@ -0,0 +1,27 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <HTDResponseOrderData xmlns="urn:org:ebics:H004" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:org:ebics:H004 http://www.ebics.org/H004/ebics_orders_H004.xsd">
3
+ <PartnerInfo>
4
+ <AddressInfo>
5
+ <Name>Railslove GmbH</Name>
6
+ <Country>Deutschland</Country>
7
+ </AddressInfo>
8
+ <BankInfo>
9
+ <HostID>SIZBN001</HostID>
10
+ </BankInfo>
11
+ <OrderInfo>
12
+ <OrderType>HTD</OrderType>
13
+ <TransferType>Download</TransferType>
14
+ <Description>Kunden- und Teilnehmerdaten abholen</Description>
15
+ </OrderInfo>
16
+ </PartnerInfo>
17
+ <UserInfo>
18
+ <UserID Status="1">EBIX</UserID>
19
+ <Name>Ebi, Epics</Name>
20
+ <Permission>
21
+ <OrderTypes>HTD</OrderTypes>
22
+ </Permission>
23
+ <Permission AuthorisationLevel="E">
24
+ <OrderTypes></OrderTypes>
25
+ </Permission>
26
+ </UserInfo>
27
+ </HTDResponseOrderData>
@@ -1,23 +1,39 @@
1
- RSpec.describe Epics::ParseEbics do
1
+ # frozen_string_literal: true
2
2
 
3
+ RSpec.describe Epics::ParseEbics do
3
4
  subject do
4
5
  Faraday.new do |builder|
5
6
  builder.use Epics::ParseEbics
6
7
  builder.adapter :test, Faraday::Adapter::Test::Stubs.new do |stub|
7
- stub.post('/business_nok') {[ 200, {}, File.read( File.join( File.dirname(__FILE__), '..', 'fixtures', 'xml', 'ebics_business_nok.xml') ) ]}
8
- stub.post('/technical_nok') {[ 200, {}, File.read( File.join( File.dirname(__FILE__), '..', 'fixtures', 'xml', 'ebics_technical_nok.xml') ) ]}
9
- stub.post('/ok') {[ 200, {}, File.read( File.join( File.dirname(__FILE__), '..', 'fixtures', 'xml', 'hpb_response_ebics_ns.xml') ) ]}
8
+ stub.post('/business_nok') { [200, {}, File.read(File.join(File.dirname(__FILE__), '..', 'fixtures', 'xml', 'ebics_business_nok.xml'))] }
9
+ stub.post('/technical_nok') { [200, {}, File.read(File.join(File.dirname(__FILE__), '..', 'fixtures', 'xml', 'ebics_technical_nok.xml'))] }
10
+ stub.post('/ok') { [200, {}, File.read(File.join(File.dirname(__FILE__), '..', 'fixtures', 'xml', 'hpb_response_ebics_ns.xml'))] }
11
+ stub.post('/timeout') { raise Faraday::TimeoutError }
12
+ stub.post('/no_connection') { raise Faraday::Error::ConnectionFailed, 'peer has finished all lan parties and gone home' }
10
13
  end
11
14
  end
12
15
  end
13
16
 
14
- it "will handle errornous response with raising the related error class" do
15
- expect { subject.post("/business_nok") }.to raise_error(Epics::Error::BusinessError, "EBICS_PROCESSING_ERROR - During processing of the EBICS request, other business-related errors have ocurred")
16
- expect { subject.post("/technical_nok") }.to raise_error(Epics::Error::TechnicalError, "EBICS_AUTHENTICATION_FAILED - Authentication signature error")
17
+ it 'will handle errornous response with raising the related error class' do
18
+ expect { subject.post('/business_nok') }.to raise_error(Epics::Error::BusinessError, 'EBICS_PROCESSING_ERROR - During processing of the EBICS request, other business-related errors have ocurred')
19
+ expect { subject.post('/technical_nok') }.to raise_error(Epics::Error::TechnicalError, 'EBICS_AUTHENTICATION_FAILED - Authentication signature error')
20
+ end
21
+
22
+ it 'will parsed as Epics::Response' do
23
+ expect(subject.post('/ok').body).to be_kind_of(Epics::Response)
17
24
  end
18
25
 
19
- it "will parsed as Epics::Response" do
20
- expect(subject.post("/ok").body).to be_kind_of(Epics::Response)
26
+ it 'will handle a timeout with raising an Epics::Error::TechnicalError' do
27
+ expect { subject.post('/timeout') }.to raise_error(Epics::Error::UnknownError, 'timeout')
21
28
  end
22
29
 
30
+ context 'failures' do
31
+ it 'will handle a timeout with raising an Epics::Error::TechnicalError' do
32
+ expect { subject.post('/timeout') }.to raise_error(Epics::Error::UnknownError, 'timeout')
33
+ end
34
+
35
+ it 'will handle a no connection error with raising an Epics::Error::TechnicalError' do
36
+ expect { subject.post('/no_connection') }.to raise_error(Epics::Error::UnknownError, 'peer has finished all lan parties and gone home')
37
+ end
38
+ end
23
39
  end
@@ -0,0 +1,15 @@
1
+ RSpec.describe Epics::XDS do
2
+ 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') }
3
+ let(:document) { File.read( File.join( File.dirname(__FILE__), '..', 'fixtures', 'xml', 'cd1.xml') ) }
4
+ subject { described_class.new(client, document) }
5
+
6
+ describe '#to_xml' do
7
+ specify { expect(subject.to_xml).to be_a_valid_ebics_doc }
8
+ end
9
+
10
+ describe '#to_transfer_xml' do
11
+ before { subject.transaction_id = SecureRandom.hex(16) }
12
+
13
+ specify { expect(subject.to_transfer_xml).to be_a_valid_ebics_doc }
14
+ end
15
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: epics
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.1
4
+ version: 1.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lars Brillert
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-03-05 00:00:00.000000000 Z
11
+ date: 2019-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -198,6 +198,8 @@ files:
198
198
  - lib/epics/sta.rb
199
199
  - lib/epics/version.rb
200
200
  - lib/epics/vmk.rb
201
+ - lib/epics/xct.rb
202
+ - lib/epics/xds.rb
201
203
  - lib/letter/ini.erb
202
204
  - spec/.DS_Store
203
205
  - spec/client_spec.rb
@@ -226,6 +228,7 @@ files:
226
228
  - spec/fixtures/xml/hpb_response_order.xml
227
229
  - spec/fixtures/xml/hpb_response_order_without_ns.xml
228
230
  - spec/fixtures/xml/htd_order_data.xml
231
+ - spec/fixtures/xml/htd_order_data_without_names.xml
229
232
  - spec/fixtures/xml/ini_response_h004_ns.xml
230
233
  - spec/fixtures/xml/jruby/hia.xml
231
234
  - spec/fixtures/xml/jruby/ini.xml
@@ -262,6 +265,7 @@ files:
262
265
  - spec/orders/ptk_spec.rb
263
266
  - spec/orders/sta_spec.rb
264
267
  - spec/orders/vmk_spec.rb
268
+ - spec/orders/xds_spec.rb
265
269
  - spec/response_spec.rb
266
270
  - spec/signer_spec.rb
267
271
  - spec/spec_helper.rb
@@ -333,6 +337,7 @@ test_files:
333
337
  - spec/fixtures/xml/hpb_response_order.xml
334
338
  - spec/fixtures/xml/hpb_response_order_without_ns.xml
335
339
  - spec/fixtures/xml/htd_order_data.xml
340
+ - spec/fixtures/xml/htd_order_data_without_names.xml
336
341
  - spec/fixtures/xml/ini_response_h004_ns.xml
337
342
  - spec/fixtures/xml/jruby/hia.xml
338
343
  - spec/fixtures/xml/jruby/ini.xml
@@ -369,6 +374,7 @@ test_files:
369
374
  - spec/orders/ptk_spec.rb
370
375
  - spec/orders/sta_spec.rb
371
376
  - spec/orders/vmk_spec.rb
377
+ - spec/orders/xds_spec.rb
372
378
  - spec/response_spec.rb
373
379
  - spec/signer_spec.rb
374
380
  - spec/spec_helper.rb