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 +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +59 -58
- data/lib/epics.rb +2 -0
- data/lib/epics/client.rb +11 -3
- data/lib/epics/error.rb +2 -1
- data/lib/epics/middleware/parse_ebics.rb +10 -5
- data/lib/epics/version.rb +1 -1
- data/lib/epics/xct.rb +30 -0
- data/lib/epics/xds.rb +5 -0
- data/spec/client_spec.rb +10 -0
- data/spec/fixtures/xml/htd_order_data_without_names.xml +27 -0
- data/spec/middleware/parse_ebics_spec.rb +25 -9
- data/spec/orders/xds_spec.rb +15 -0
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 16a3bb74f8943c4f82b808e830e2306d2af5bfb80e80a4985ca47760b8e6a28f
|
4
|
+
data.tar.gz: 2ae911622605fb2965431fd7fb78f16e97e4bf1151fe0ec0f47c30632015a125
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3ca8b3806e14e95aeed7576b48aebe5c04c7cbfac8e524f9e89da93716735533567d8c20529934d2bb65875b9db828318639f2d5ede1592cd53f210b41e6e398
|
7
|
+
data.tar.gz: 7c8f67d58425a6dc8ce16427c89960d50ecc55f4ee18880c2012655d4f271df719dca55c955ce04da3ccd8a12e4a104b30b948af38f029884947a2484d99491b
|
data/CHANGELOG.md
CHANGED
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
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
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
|
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
|
-
|
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
|
-
|
126
|
-
|
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
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
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
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
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
|
-
|
191
|
-
|
192
|
-
|
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
|
-
|
216
|
-
|
207
|
+
- Business-Logics EBICS, Banking-Server
|
208
|
+
- Travic Corporate
|
217
209
|
|
218
210
|
Used for example by the following tested institutions:
|
219
211
|
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
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
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
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
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
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.
|
data/lib/epics.rb
CHANGED
data/lib/epics/client.rb
CHANGED
@@ -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
|
data/lib/epics/error.rb
CHANGED
@@ -1,15 +1,20 @@
|
|
1
|
-
|
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 |
|
10
|
-
|
11
|
-
raise Epics::Error::TechnicalError
|
12
|
-
raise Epics::Error::BusinessError
|
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
|
data/lib/epics/version.rb
CHANGED
data/lib/epics/xct.rb
ADDED
@@ -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
|
data/lib/epics/xds.rb
ADDED
data/spec/client_spec.rb
CHANGED
@@ -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
|
-
|
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') {[
|
8
|
-
stub.post('/technical_nok') {[
|
9
|
-
stub.post('/ok') {[
|
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
|
15
|
-
expect { subject.post(
|
16
|
-
expect { subject.post(
|
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
|
20
|
-
expect
|
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.
|
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-
|
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
|