epics 2.10.0 → 3.0.0.rc1
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/.gitignore +2 -1
- data/.semaphore/semaphore.yml +17 -8
- data/CHANGELOG.md +97 -0
- data/EBICS_REFERENCES.md +169 -0
- data/README.md +219 -50
- data/lib/epics/azv.rb +3 -10
- data/lib/epics/b2b.rb +3 -10
- data/lib/epics/bka.rb +3 -14
- data/lib/epics/builders/body_builder/base.rb +26 -0
- data/lib/epics/builders/body_builder/v2.rb +9 -0
- data/lib/epics/builders/body_builder/v3.rb +9 -0
- data/lib/epics/builders/body_builder.rb +6 -0
- data/lib/epics/builders/data_encryption_info_builder.rb +29 -0
- data/lib/epics/builders/data_transfer_builder/base.rb +52 -0
- data/lib/epics/builders/data_transfer_builder/v2.rb +9 -0
- data/lib/epics/builders/data_transfer_builder/v3.rb +12 -0
- data/lib/epics/builders/data_transfer_builder.rb +6 -0
- data/lib/epics/builders/header_builder/base.rb +26 -0
- data/lib/epics/builders/header_builder/v2.rb +9 -0
- data/lib/epics/builders/header_builder/v3.rb +9 -0
- data/lib/epics/builders/header_builder.rb +6 -0
- data/lib/epics/builders/mutable_builder.rb +28 -0
- data/lib/epics/builders/order_details_builder/base.rb +100 -0
- data/lib/epics/builders/order_details_builder/v2.rb +21 -0
- data/lib/epics/builders/order_details_builder/v3.rb +51 -0
- data/lib/epics/builders/order_details_builder.rb +10 -0
- data/lib/epics/builders/request_builder.rb +25 -0
- data/lib/epics/builders/static_builder/base.rb +75 -0
- data/lib/epics/builders/static_builder/v2.rb +9 -0
- data/lib/epics/builders/static_builder/v3.rb +9 -0
- data/lib/epics/builders/static_builder.rb +9 -0
- data/lib/epics/builders/transfer_receipt_builder.rb +19 -0
- data/lib/epics/builders/xml_builder/base.rb +92 -0
- data/lib/epics/builders/xml_builder/v24.rb +31 -0
- data/lib/epics/builders/xml_builder/v25.rb +31 -0
- data/lib/epics/builders/xml_builder/v3.rb +31 -0
- data/lib/epics/builders/xml_builder.rb +7 -0
- data/lib/epics/builders.rb +13 -0
- data/lib/epics/c2s.rb +3 -10
- data/lib/epics/c52.rb +2 -14
- data/lib/epics/c53.rb +2 -14
- data/lib/epics/c54.rb +2 -14
- data/lib/epics/c5n.rb +3 -14
- data/lib/epics/ccs.rb +3 -10
- data/lib/epics/cct.rb +3 -10
- data/lib/epics/cd1.rb +3 -10
- data/lib/epics/cdb.rb +3 -10
- data/lib/epics/cdd.rb +3 -10
- data/lib/epics/cds.rb +3 -10
- data/lib/epics/cdz.rb +3 -14
- data/lib/epics/cip.rb +3 -10
- data/lib/epics/client.rb +491 -123
- data/lib/epics/crypt/aes.rb +56 -0
- data/lib/epics/crypt/x_509.rb +52 -0
- data/lib/epics/crypt.rb +5 -0
- data/lib/epics/crz.rb +3 -14
- data/lib/epics/factories/crypt/aes_factory.rb +5 -0
- data/lib/epics/factories/crypt.rb +4 -0
- data/lib/epics/factories/request_factory/base.rb +236 -0
- data/lib/epics/factories/request_factory/v2.rb +194 -0
- data/lib/epics/factories/request_factory/v24.rb +32 -0
- data/lib/epics/factories/request_factory/v25.rb +31 -0
- data/lib/epics/factories/request_factory/v3.rb +305 -0
- data/lib/epics/factories/request_factory.rb +8 -0
- data/lib/epics/factories.rb +5 -0
- data/lib/epics/fdl.rb +3 -18
- data/lib/epics/ful.rb +6 -0
- data/lib/epics/generic_request.rb +31 -92
- data/lib/epics/generic_upload_request.rb +14 -67
- data/lib/epics/haa.rb +3 -9
- data/lib/epics/hac.rb +3 -14
- data/lib/epics/handlers/auth_signature_handler.rb +102 -0
- data/lib/epics/handlers/order_data_handler/base.rb +98 -0
- data/lib/epics/handlers/order_data_handler/v2.rb +39 -0
- data/lib/epics/handlers/order_data_handler/v24.rb +11 -0
- data/lib/epics/handlers/order_data_handler/v25.rb +11 -0
- data/lib/epics/handlers/order_data_handler/v3.rb +41 -0
- data/lib/epics/handlers/order_data_handler.rb +8 -0
- data/lib/epics/handlers/user_signature_handler/base.rb +10 -0
- data/lib/epics/handlers/user_signature_handler/v2.rb +17 -0
- data/lib/epics/handlers/user_signature_handler/v3.rb +17 -0
- data/lib/epics/handlers/user_signature_handler.rb +6 -0
- data/lib/epics/handlers.rb +6 -0
- data/lib/epics/hev.rb +2 -15
- data/lib/epics/hia.rb +4 -55
- data/lib/epics/hkd.rb +3 -9
- data/lib/epics/hpb.rb +3 -13
- data/lib/epics/hpd.rb +3 -9
- data/lib/epics/htd.rb +3 -9
- data/lib/epics/ini.rb +4 -46
- data/lib/epics/keyring.rb +17 -0
- data/lib/epics/letter_renderer.rb +17 -22
- data/lib/epics/ptk.rb +3 -14
- data/lib/epics/response.rb +34 -29
- data/lib/epics/services/crypt_service.rb +62 -0
- data/lib/epics/services/digest_resolver/base.rb +30 -0
- data/lib/epics/services/digest_resolver/v2.rb +13 -0
- data/lib/epics/services/digest_resolver/v3.rb +19 -0
- data/lib/epics/services/digest_resolver.rb +6 -0
- data/lib/epics/services.rb +5 -0
- data/lib/epics/signature.rb +50 -0
- data/lib/epics/{key.rb → signature_algorithm/base.rb} +14 -21
- data/lib/epics/signature_algorithm/rsa.rb +50 -0
- data/lib/epics/signature_algorithm/rsapkcs1.rb +16 -0
- data/lib/epics/signature_algorithm/rsapss.rb +20 -0
- data/lib/epics/signature_algorithm.rb +2 -0
- data/lib/epics/sta.rb +3 -14
- data/lib/epics/version.rb +1 -1
- data/lib/epics/vmk.rb +3 -14
- data/lib/epics/wss.rb +3 -9
- data/lib/epics/xct.rb +3 -10
- data/lib/epics/xds.rb +3 -10
- data/lib/epics/xe2.rb +3 -10
- data/lib/epics/xe3.rb +3 -10
- data/lib/epics/xek.rb +5 -0
- data/lib/epics/yct.rb +6 -0
- data/lib/epics/z01.rb +2 -14
- data/lib/epics/z52.rb +2 -14
- data/lib/epics/z53.rb +2 -14
- data/lib/epics/z54.rb +2 -14
- data/lib/epics/zsr.rb +5 -0
- data/lib/epics.rb +69 -5
- data/lib/letter/ini.erb +27 -6
- data/spec/aes_spec.rb +46 -0
- data/spec/auth_signature_handler_spec.rb +58 -0
- data/spec/builders_spec.rb +616 -0
- data/spec/certificate_handling_spec.rb +189 -0
- data/spec/client_setup_block_spec.rb +41 -0
- data/spec/client_spec.rb +143 -91
- data/spec/crypt_service_spec.rb +132 -0
- data/spec/date_range_spec.rb +46 -0
- data/spec/digest_resolver_spec.rb +164 -0
- data/spec/fixtures/bank_x509.pem +3 -0
- data/spec/fixtures/xml/haa.xml +40 -1
- data/spec/fixtures/xml/haa_receipt.xml +33 -30
- data/spec/fixtures/xml/haa_response_h004.xml +4 -0
- data/spec/fixtures/xml/haa_response_h005.xml +38 -0
- data/spec/fixtures/xml/hia_request_order_data.xml +24 -1
- data/spec/fixtures/xml/hpb_request.xml +1 -1
- data/spec/fixtures/xml/hpb_response_x509.xml +16 -0
- data/spec/fixtures/xml/htd_order_data_h005.xml +55 -0
- data/spec/fixtures/xml/jruby/hia.xml +20 -22
- data/spec/fixtures/xml/jruby/ini.xml +1 -3
- data/spec/fixtures/xml/ruby/hia.xml +21 -1
- data/spec/fixtures/xml/ruby/ini.xml +21 -1
- data/spec/handlers_spec.rb +267 -0
- data/spec/hpb_malformed_certificate_spec.rb +36 -0
- data/spec/key_file_decryption_spec.rb +27 -0
- data/spec/key_file_preservation_spec.rb +78 -0
- data/spec/keyring_spec.rb +349 -0
- data/spec/middleware/parse_ebics_spec.rb +2 -1
- data/spec/order_id_spec.rb +65 -0
- data/spec/orders/azv_spec.rb +63 -7
- data/spec/orders/b2b_spec.rb +68 -3
- data/spec/orders/bka_spec.rb +34 -4
- data/spec/orders/c2s_spec.rb +62 -9
- data/spec/orders/c52_spec.rb +34 -4
- data/spec/orders/c53_spec.rb +34 -4
- data/spec/orders/c54_spec.rb +36 -4
- data/spec/orders/c5n_spec.rb +36 -4
- data/spec/orders/camt_parity_spec.rb +80 -0
- data/spec/orders/ccs_spec.rb +62 -9
- data/spec/orders/cct_spec.rb +83 -9
- data/spec/orders/cd1_spec.rb +50 -7
- data/spec/orders/cdb_spec.rb +64 -7
- data/spec/orders/cdd_spec.rb +64 -7
- data/spec/orders/cds_spec.rb +74 -0
- data/spec/orders/cdz_spec.rb +67 -4
- data/spec/orders/cip_spec.rb +61 -9
- data/spec/orders/crz_spec.rb +67 -4
- data/spec/orders/fdl_spec.rb +143 -13
- data/spec/orders/ful_spec.rb +63 -0
- data/spec/orders/haa_spec.rb +115 -9
- data/spec/orders/hac_spec.rb +89 -10
- data/spec/orders/hev_spec.rb +1 -6
- data/spec/orders/hia_spec.rb +25 -22
- data/spec/orders/hkd_spec.rb +23 -4
- data/spec/orders/hpb_spec.rb +7 -4
- data/spec/orders/hpd_spec.rb +23 -4
- data/spec/orders/htd_spec.rb +23 -4
- data/spec/orders/ini_spec.rb +23 -18
- data/spec/orders/ptk_spec.rb +27 -4
- data/spec/orders/sta_spec.rb +129 -11
- data/spec/orders/vmk_spec.rb +36 -4
- data/spec/orders/wss_spec.rb +29 -3
- data/spec/orders/x_509_certificate_spec.rb +9 -1
- data/spec/orders/xct_spec.rb +63 -0
- data/spec/orders/xds_spec.rb +13 -6
- data/spec/orders/xe2_spec.rb +64 -7
- data/spec/orders/xe3_spec.rb +64 -7
- data/spec/orders/xek_spec.rb +31 -0
- data/spec/orders/yct_spec.rb +43 -0
- data/spec/orders/z01_spec.rb +34 -4
- data/spec/orders/z52_spec.rb +34 -4
- data/spec/orders/z53_spec.rb +34 -4
- data/spec/orders/z54_spec.rb +36 -4
- data/spec/orders/zsr_spec.rb +31 -0
- data/spec/request_factory_spec.rb +444 -0
- data/spec/response_business_error_spec.rb +45 -0
- data/spec/response_validation_spec.rb +23 -0
- data/spec/{key_spec.rb → signature_algorithm/rsa_pss_spec.rb} +4 -13
- data/spec/support/ebics_matcher.rb +17 -9
- data/spec/support/ebics_shared_examples.rb +642 -0
- data/spec/support/h005_client_helper.rb +23 -0
- data/spec/upload_digest_spec.rb +69 -0
- data/spec/user_signature_handler_spec.rb +25 -0
- data/spec/version_support_error_spec.rb +76 -0
- data/spec/xsd/{ebics_hev.xsd → H000/ebics_hev.xsd} +0 -0
- data/spec/xsd/H003/ebics.xsd +11 -0
- data/spec/xsd/H003/ebics_keymgmt_request.xsd +555 -0
- data/spec/xsd/H003/ebics_keymgmt_response.xsd +131 -0
- data/spec/xsd/H003/ebics_orders.xsd +1811 -0
- data/spec/xsd/H003/ebics_request.xsd +354 -0
- data/spec/xsd/H003/ebics_response.xsd +161 -0
- data/spec/xsd/{ebics_signature.xsd → H003/ebics_signature.xsd} +0 -0
- data/spec/xsd/H003/ebics_types.xsd +2361 -0
- data/spec/xsd/H003/xmldsig-core-schema.xsd +318 -0
- data/spec/xsd/H004/ebics_signature.xsd +217 -0
- data/spec/xsd/H005/ebics_H005.xsd +11 -0
- data/spec/xsd/H005/ebics_keymgmt_request_H005.xsd +523 -0
- data/spec/xsd/H005/ebics_keymgmt_response_H005.xsd +137 -0
- data/spec/xsd/H005/ebics_orders_H005.xsd +2094 -0
- data/spec/xsd/H005/ebics_request_H005.xsd +349 -0
- data/spec/xsd/H005/ebics_response_H005.xsd +167 -0
- data/spec/xsd/H005/ebics_signature_S002.xsd +177 -0
- data/spec/xsd/H005/ebics_types_H005.xsd +1885 -0
- data/spec/xsd/H005/xmldsig-core-schema.xsd +318 -0
- metadata +200 -36
- data/lib/epics/header_request.rb +0 -58
- data/lib/epics/middleware/xmlsig.rb +0 -16
- data/lib/epics/signer.rb +0 -40
- data/lib/epics/x_509_certificate.rb +0 -15
- data/lib/letter/ini_with_certs.erb +0 -335
- data/spec/generic_upload_spec.rb +0 -58
- data/spec/hpb_spec.rb +0 -15
- data/spec/signer_spec.rb +0 -34
- /data/spec/xsd/{ebics_H004.xsd → H004/ebics_H004.xsd} +0 -0
- /data/spec/xsd/{ebics_keymgmt_request_H004.xsd → H004/ebics_keymgmt_request_H004.xsd} +0 -0
- /data/spec/xsd/{ebics_keymgmt_response_H004.xsd → H004/ebics_keymgmt_response_H004.xsd} +0 -0
- /data/spec/xsd/{ebics_orders_H004.xsd → H004/ebics_orders_H004.xsd} +0 -0
- /data/spec/xsd/{ebics_request_H004.xsd → H004/ebics_request_H004.xsd} +0 -0
- /data/spec/xsd/{ebics_response_H004.xsd → H004/ebics_response_H004.xsd} +0 -0
- /data/spec/xsd/{ebics_types_H004.xsd → H004/ebics_types_H004.xsd} +0 -0
- /data/spec/xsd/{xmldsig-core-schema.xsd → H004/xmldsig-core-schema.xsd} +0 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
class Epics::Crypt::Aes
|
|
2
|
+
attr_writer :key, :key_length
|
|
3
|
+
|
|
4
|
+
def initialize
|
|
5
|
+
@cipher = {}
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def decrypt(encrypted)
|
|
9
|
+
cipher = use_cipher(:decrypt)
|
|
10
|
+
unpad(cipher.update(encrypted) + cipher.final)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def encrypt(plaintext)
|
|
14
|
+
cipher = use_cipher(:encrypt)
|
|
15
|
+
cipher.update(pad(cipher, plaintext)) + cipher.final
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def key
|
|
19
|
+
@key ||= create_cipher.random_key
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def key_length
|
|
23
|
+
@key_length ||= 128
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
private
|
|
27
|
+
|
|
28
|
+
def create_cipher
|
|
29
|
+
@cipher[key_length] ||= OpenSSL::Cipher::AES.new(key_length, :CBC).tap do |cipher|
|
|
30
|
+
cipher.padding = 0
|
|
31
|
+
cipher.iv = 0.chr * cipher.iv_len
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def use_cipher(method)
|
|
36
|
+
create_cipher.tap do |cipher|
|
|
37
|
+
cipher.reset
|
|
38
|
+
cipher.send(method)
|
|
39
|
+
cipher.key = key
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def pad(cipher, text)
|
|
44
|
+
len = cipher.block_size * ((text.size / cipher.block_size) + 1)
|
|
45
|
+
|
|
46
|
+
text.ljust(len, [0].pack('C*')).tap do |padded|
|
|
47
|
+
padded[-1] = [len - text.size].pack('C*')
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def unpad(text)
|
|
52
|
+
len = text[-1].unpack('C*').first
|
|
53
|
+
|
|
54
|
+
text[0...-len]
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
class Epics::Crypt::X509
|
|
2
|
+
extend Forwardable
|
|
3
|
+
|
|
4
|
+
# Swiss market practice guidelines §6.1 name 9999-12-31 as the "unlimited" validity
|
|
5
|
+
# date. An expired certificate means re-initialising with the bank.
|
|
6
|
+
UNLIMITED = Time.utc(9999, 12, 31, 23, 59, 59).freeze
|
|
7
|
+
|
|
8
|
+
KEY_USAGE = 'digitalSignature,nonRepudiation,keyEncipherment'.freeze
|
|
9
|
+
|
|
10
|
+
attr_reader :certificate
|
|
11
|
+
|
|
12
|
+
def_delegators :certificate, :issuer, :serial, :version, :to_der, :to_pem
|
|
13
|
+
|
|
14
|
+
# Self-signed certificate for `key`, which may be an OpenSSL::PKey::RSA or an
|
|
15
|
+
# Epics::SignatureAlgorithm wrapping one. `subject` takes an OpenSSL::X509::Name or
|
|
16
|
+
# any string OpenSSL::X509::Name.parse accepts.
|
|
17
|
+
def self.generate(key, subject:, not_before: nil, not_after: UNLIMITED, serial: nil)
|
|
18
|
+
key = key.key if key.respond_to?(:key)
|
|
19
|
+
name = subject.is_a?(OpenSSL::X509::Name) ? subject : OpenSSL::X509::Name.parse(subject)
|
|
20
|
+
|
|
21
|
+
certificate = OpenSSL::X509::Certificate.new
|
|
22
|
+
certificate.version = 2
|
|
23
|
+
certificate.serial = serial || SecureRandom.random_number(2**64)
|
|
24
|
+
certificate.subject = name
|
|
25
|
+
certificate.issuer = name
|
|
26
|
+
certificate.public_key = key.public_key
|
|
27
|
+
certificate.not_before = not_before || Time.now.utc
|
|
28
|
+
certificate.not_after = not_after
|
|
29
|
+
|
|
30
|
+
factory = OpenSSL::X509::ExtensionFactory.new
|
|
31
|
+
factory.subject_certificate = certificate
|
|
32
|
+
factory.issuer_certificate = certificate
|
|
33
|
+
certificate.add_extension(factory.create_extension('basicConstraints', 'CA:FALSE', true))
|
|
34
|
+
certificate.add_extension(factory.create_extension('keyUsage', KEY_USAGE, true))
|
|
35
|
+
|
|
36
|
+
certificate.sign(key, OpenSSL::Digest.new('SHA256'))
|
|
37
|
+
|
|
38
|
+
new(certificate.to_pem)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def initialize(content)
|
|
42
|
+
@certificate = OpenSSL::X509::Certificate.new(content)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def data
|
|
46
|
+
Base64.strict_encode64(certificate.to_der)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def fingerprint
|
|
50
|
+
Digest::SHA256.hexdigest(certificate.to_der).upcase
|
|
51
|
+
end
|
|
52
|
+
end
|
data/lib/epics/crypt.rb
ADDED
data/lib/epics/crz.rb
CHANGED
|
@@ -1,17 +1,6 @@
|
|
|
1
1
|
class Epics::CRZ < Epics::GenericRequest
|
|
2
|
-
def
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
timestamp: timestamp,
|
|
6
|
-
order_type: 'CRZ',
|
|
7
|
-
order_attribute: 'DZHNN',
|
|
8
|
-
order_params: !!options[:from] && !!options[:to] ? {
|
|
9
|
-
DateRange: {
|
|
10
|
-
Start: options[:from],
|
|
11
|
-
End: options[:to]
|
|
12
|
-
}
|
|
13
|
-
} : {},
|
|
14
|
-
mutable: { TransactionPhase: 'Initialisation' }
|
|
15
|
-
)
|
|
2
|
+
def to_xml
|
|
3
|
+
builder = request_factory.create_crz(options[:from], options[:to])
|
|
4
|
+
builder.to_xml
|
|
16
5
|
end
|
|
17
6
|
end
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
class Epics::Factories::RequestFactory::Base
|
|
2
|
+
ORDER_TYPES = %w[
|
|
3
|
+
azv b2b btd btu bka
|
|
4
|
+
c2s c5n c52 c53 c54 ccs cct cd1 cdb cdd cds cdz cip crz
|
|
5
|
+
fdl ful h3k haa hac hev hia hkd hpb hpd htd ini ptk spr sta
|
|
6
|
+
vmk wss xct xds xe2 xe3 xek yct z01 z52 z53 z54 zsr
|
|
7
|
+
].freeze
|
|
8
|
+
|
|
9
|
+
(ORDER_TYPES - %w[
|
|
10
|
+
b2b bka c2s c5n c52 c53 c54 ccs cct cd1 cdb cdd cds cdz cip crz
|
|
11
|
+
fdl ful h3k haa hac hev hia hkd hpb hpd htd ini ptk spr
|
|
12
|
+
sta vmk wss xds xe2 xe3 z01 z52 z53 z54
|
|
13
|
+
]).each do |type|
|
|
14
|
+
define_method("create_#{type}") { |*| raise NotImplementedError }
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def initialize(client)
|
|
18
|
+
@client = client
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def add_order_type(order_details_builder, order_type, with_es = false)
|
|
22
|
+
raise NotImplementedError
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def create_hev
|
|
26
|
+
request_builder.add_container_hev do |xml_builder|
|
|
27
|
+
xml_builder.add_host_id @client.host_id
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def create_ini(order_data)
|
|
32
|
+
request_builder.add_container_unsecured do |xml_builder|
|
|
33
|
+
xml_builder.add_header do |header_builder|
|
|
34
|
+
header_builder.add_static do |static_builder|
|
|
35
|
+
static_builder.add_host_id @client.host_id
|
|
36
|
+
static_builder.add_partner_id @client.partner_id
|
|
37
|
+
static_builder.add_user_id @client.user_id
|
|
38
|
+
static_builder.add_product @client.product_name, @client.locale
|
|
39
|
+
static_builder.add_order_details do |order_details_builder|
|
|
40
|
+
add_order_type(order_details_builder, 'INI')
|
|
41
|
+
end
|
|
42
|
+
static_builder.add_security_medium Epics::Builders::StaticBuilder::SECURITY_MEDIUM_0000
|
|
43
|
+
end
|
|
44
|
+
header_builder.add_mutable
|
|
45
|
+
end
|
|
46
|
+
xml_builder.add_body do |body_builder|
|
|
47
|
+
body_builder.add_data_transfer do |data_transfer_builder|
|
|
48
|
+
data_transfer_builder.add_order_data order_data
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def create_hia(order_data)
|
|
55
|
+
request_builder.add_container_unsecured do |xml_builder|
|
|
56
|
+
xml_builder.add_header do |header_builder|
|
|
57
|
+
header_builder.add_static do |static_builder|
|
|
58
|
+
static_builder.add_host_id @client.host_id
|
|
59
|
+
static_builder.add_partner_id @client.partner_id
|
|
60
|
+
static_builder.add_user_id @client.user_id
|
|
61
|
+
static_builder.add_product @client.product_name, @client.locale
|
|
62
|
+
static_builder.add_order_details do |order_details_builder|
|
|
63
|
+
add_order_type(order_details_builder, 'HIA')
|
|
64
|
+
end
|
|
65
|
+
static_builder.add_security_medium Epics::Builders::StaticBuilder::SECURITY_MEDIUM_0000
|
|
66
|
+
end
|
|
67
|
+
header_builder.add_mutable
|
|
68
|
+
end
|
|
69
|
+
xml_builder.add_body do |body_builder|
|
|
70
|
+
body_builder.add_data_transfer do |data_transfer_builder|
|
|
71
|
+
data_transfer_builder.add_order_data order_data
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def create_h3k(*, **)
|
|
78
|
+
raise NotImplementedError
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def create_hpb
|
|
82
|
+
auth_signature_handler = Epics::Handlers::AuthSignatureHandler.new(@client.keyring)
|
|
83
|
+
request_builder.add_container_secured_no_pubkey_digests do |xml_builder|
|
|
84
|
+
xml_builder.add_header do |header_builder|
|
|
85
|
+
header_builder.add_static do |static_builder|
|
|
86
|
+
static_builder.add_host_id @client.host_id
|
|
87
|
+
static_builder.add_random_nonce
|
|
88
|
+
static_builder.add_timestamp Time.now.utc
|
|
89
|
+
static_builder.add_partner_id @client.partner_id
|
|
90
|
+
static_builder.add_user_id @client.user_id
|
|
91
|
+
static_builder.add_product @client.product_name, @client.locale
|
|
92
|
+
static_builder.add_order_details do |order_details_builder|
|
|
93
|
+
add_order_type(order_details_builder, 'HPB')
|
|
94
|
+
end
|
|
95
|
+
static_builder.add_security_medium Epics::Builders::StaticBuilder::SECURITY_MEDIUM_0000
|
|
96
|
+
end
|
|
97
|
+
header_builder.add_mutable
|
|
98
|
+
end
|
|
99
|
+
xml_builder.add_body
|
|
100
|
+
auth_signature_handler.handle(xml_builder)
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def create_spr(*, **)
|
|
105
|
+
raise NotImplementedError
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def create_hpd
|
|
109
|
+
build_standard_request('HPD')
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def create_hkd
|
|
113
|
+
build_standard_request('HKD')
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def create_htd
|
|
117
|
+
build_standard_request('HTD')
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def create_haa
|
|
121
|
+
build_standard_request('HAA')
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def create_hac(start_date, end_date)
|
|
125
|
+
build_standard_request('HAC', start_date: start_date, end_date: end_date)
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def create_ptk(start_date, end_date)
|
|
129
|
+
build_standard_request('PTK', start_date: start_date, end_date: end_date)
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
def create_fdl(format, start_date, end_date)
|
|
133
|
+
build_standard_request('FDL') do |order_details_builder|
|
|
134
|
+
order_details_builder.add_fdl_order_params(format, start_date, end_date)
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
def create_ful(digest, transaction_key, file_format:)
|
|
139
|
+
raise NotImplementedError
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
def create_transfer_receipt(transaction_id, acknowledged)
|
|
143
|
+
auth_signature_handler = Epics::Handlers::AuthSignatureHandler.new(@client.keyring)
|
|
144
|
+
request_builder.add_container_secured do |xml_builder|
|
|
145
|
+
xml_builder.add_header do |header_builder|
|
|
146
|
+
header_builder.add_static do |static_builder|
|
|
147
|
+
static_builder.add_host_id @client.host_id
|
|
148
|
+
static_builder.add_transaction_id transaction_id
|
|
149
|
+
end
|
|
150
|
+
header_builder.add_mutable do |mutable_builder|
|
|
151
|
+
mutable_builder.add_transaction_phase Epics::Builders::MutableBuilder::PHASE_RECEIPT
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
xml_builder.add_body do |body_builder|
|
|
155
|
+
body_builder.add_transfer_receipt do |transfer_receipt_builder|
|
|
156
|
+
transfer_receipt_builder.add_receipt_code acknowledged
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
auth_signature_handler.handle(xml_builder)
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
def create_transfer_upload(transaction_id, transaction_key, order_data, segment_number, is_last_segment = false)
|
|
164
|
+
auth_signature_handler = Epics::Handlers::AuthSignatureHandler.new(@client.keyring)
|
|
165
|
+
request_builder.add_container_secured do |xml_builder|
|
|
166
|
+
xml_builder.add_header do |header_builder|
|
|
167
|
+
header_builder.add_static do |static_builder|
|
|
168
|
+
static_builder.add_host_id @client.host_id
|
|
169
|
+
static_builder.add_transaction_id transaction_id
|
|
170
|
+
end
|
|
171
|
+
header_builder.add_mutable do |mutable_builder|
|
|
172
|
+
mutable_builder.add_transaction_phase Epics::Builders::MutableBuilder::PHASE_TRANSFER
|
|
173
|
+
mutable_builder.add_segment_number segment_number, is_last_segment
|
|
174
|
+
end
|
|
175
|
+
end
|
|
176
|
+
xml_builder.add_body do |body_builder|
|
|
177
|
+
body_builder.add_data_transfer do |data_transfer_builder|
|
|
178
|
+
data_transfer_builder.add_order_data(order_data, transaction_key)
|
|
179
|
+
end if order_data
|
|
180
|
+
end
|
|
181
|
+
auth_signature_handler.handle(xml_builder)
|
|
182
|
+
end
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
def create_transfer_download(transaction_id, segment_number, is_last_segment = false)
|
|
186
|
+
create_transfer_upload(transaction_id, nil, nil, segment_number, is_last_segment)
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
protected
|
|
190
|
+
|
|
191
|
+
def xml_builder
|
|
192
|
+
raise NotImplementedError
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
def request_builder
|
|
196
|
+
Epics::Builders::RequestBuilder.new(xml_builder)
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
private
|
|
200
|
+
|
|
201
|
+
def build_standard_request(order_type, start_date: nil, end_date: nil, with_es: false)
|
|
202
|
+
auth_signature_handler = Epics::Handlers::AuthSignatureHandler.new(@client.keyring)
|
|
203
|
+
request_builder.add_container_secured do |xml_builder|
|
|
204
|
+
xml_builder.add_header do |header_builder|
|
|
205
|
+
header_builder.add_static do |static_builder|
|
|
206
|
+
static_builder.add_host_id @client.host_id
|
|
207
|
+
static_builder.add_random_nonce
|
|
208
|
+
static_builder.add_timestamp Time.now.utc
|
|
209
|
+
static_builder.add_partner_id @client.partner_id
|
|
210
|
+
static_builder.add_user_id @client.user_id
|
|
211
|
+
static_builder.add_product @client.product_name, @client.locale
|
|
212
|
+
static_builder.add_order_details do |order_details_builder|
|
|
213
|
+
add_order_type(order_details_builder, order_type, with_es)
|
|
214
|
+
if block_given?
|
|
215
|
+
yield order_details_builder
|
|
216
|
+
else
|
|
217
|
+
order_details_builder.add_standard_order_params start_date, end_date
|
|
218
|
+
end
|
|
219
|
+
end
|
|
220
|
+
static_builder.add_bank_pubbey_digests(
|
|
221
|
+
@client.keyring.bank_authentication.version,
|
|
222
|
+
@digest_resolver.sign_digest(@client.keyring.bank_authentication),
|
|
223
|
+
@client.keyring.bank_encryption.version,
|
|
224
|
+
@digest_resolver.sign_digest(@client.keyring.bank_encryption)
|
|
225
|
+
)
|
|
226
|
+
static_builder.add_security_medium Epics::Builders::StaticBuilder::SECURITY_MEDIUM_0000
|
|
227
|
+
end
|
|
228
|
+
header_builder.add_mutable do |mutable_builder|
|
|
229
|
+
mutable_builder.add_transaction_phase Epics::Builders::MutableBuilder::PHASE_INITIALIZATION
|
|
230
|
+
end
|
|
231
|
+
end
|
|
232
|
+
xml_builder.add_body
|
|
233
|
+
auth_signature_handler.handle(xml_builder)
|
|
234
|
+
end
|
|
235
|
+
end
|
|
236
|
+
end
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
class Epics::Factories::RequestFactory::V2 < Epics::Factories::RequestFactory::Base
|
|
2
|
+
%w[btd btu].each do |type|
|
|
3
|
+
define_method("create_#{type}") { |*| raise Epics::VersionSupportError, 3.0 }
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
def initialize(client)
|
|
7
|
+
@digest_resolver = Epics::Services::DigestResolver::V2.new
|
|
8
|
+
@user_signature_handle = Epics::Handlers::UserSignatureHandler::V2.new(client)
|
|
9
|
+
super
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def create_bka(start_date, end_date)
|
|
13
|
+
build_download_request('BKA', start_date: start_date, end_date: end_date)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def create_z01(start_date, end_date, **)
|
|
17
|
+
build_download_request('Z01', start_date: start_date, end_date: end_date)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def create_c52(start_date, end_date, **)
|
|
21
|
+
build_download_request('C52', start_date: start_date, end_date: end_date)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def create_c53(start_date, end_date, **)
|
|
25
|
+
build_download_request('C53', start_date: start_date, end_date: end_date)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def create_c54(start_date, end_date, **)
|
|
29
|
+
build_download_request('C54', start_date: start_date, end_date: end_date)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def create_c5n(start_date, end_date)
|
|
33
|
+
build_download_request('C5N', start_date: start_date, end_date: end_date)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def create_cdz(start_date, end_date)
|
|
37
|
+
build_download_request('CDZ', start_date: start_date, end_date: end_date)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def create_crz(start_date, end_date)
|
|
41
|
+
build_download_request('CRZ', start_date: start_date, end_date: end_date)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def create_sta(start_date, end_date)
|
|
45
|
+
build_download_request('STA', start_date: start_date, end_date: end_date)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def create_vmk(start_date, end_date)
|
|
49
|
+
build_download_request('VMK', start_date: start_date, end_date: end_date)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def create_wss
|
|
53
|
+
build_download_request('WSS')
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def create_z52(start_date, end_date, **)
|
|
57
|
+
build_download_request('Z52', start_date: start_date, end_date: end_date)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def create_z53(start_date, end_date, **)
|
|
61
|
+
build_download_request('Z53', start_date: start_date, end_date: end_date)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def create_z54(start_date, end_date, **)
|
|
65
|
+
build_download_request('Z54', start_date: start_date, end_date: end_date)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def create_b2b(digest, transaction_key, **)
|
|
69
|
+
signature_data = @user_signature_handle.handle(digest).to_xml
|
|
70
|
+
build_upload_request('B2B', transaction_key, signature_data, 1, true)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def create_c2s(digest, transaction_key, **)
|
|
74
|
+
signature_data = @user_signature_handle.handle(digest).to_xml
|
|
75
|
+
build_upload_request('C2S', transaction_key, signature_data, 1, false)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def create_ccs(digest, transaction_key, **)
|
|
79
|
+
signature_data = @user_signature_handle.handle(digest).to_xml
|
|
80
|
+
build_upload_request('CCS', transaction_key, signature_data, 1, false)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def create_cct(digest, transaction_key, **)
|
|
84
|
+
signature_data = @user_signature_handle.handle(digest).to_xml
|
|
85
|
+
build_upload_request('CCT', transaction_key, signature_data, 1, true)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def create_cds(digest, transaction_key, **)
|
|
89
|
+
signature_data = @user_signature_handle.handle(digest).to_xml
|
|
90
|
+
build_upload_request('CDS', transaction_key, signature_data, 1, false)
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def create_azv(digest, transaction_key, **)
|
|
94
|
+
create_cd1(digest, transaction_key)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def create_cd1(digest, transaction_key, **)
|
|
98
|
+
signature_data = @user_signature_handle.handle(digest).to_xml
|
|
99
|
+
build_upload_request('CD1', transaction_key, signature_data, 1, true)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def create_cdd(digest, transaction_key, **)
|
|
103
|
+
signature_data = @user_signature_handle.handle(digest).to_xml
|
|
104
|
+
build_upload_request('CDD', transaction_key, signature_data, 1, true)
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def create_cdb(digest, transaction_key, **)
|
|
108
|
+
signature_data = @user_signature_handle.handle(digest).to_xml
|
|
109
|
+
build_upload_request('CDB', transaction_key, signature_data, 1, true)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def create_cip(digest, transaction_key, **)
|
|
113
|
+
signature_data = @user_signature_handle.handle(digest).to_xml
|
|
114
|
+
build_upload_request('CIP', transaction_key, signature_data, 1, true)
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def create_xct(digest, transaction_key, **)
|
|
118
|
+
signature_data = @user_signature_handle.handle(digest).to_xml
|
|
119
|
+
build_upload_request('XCT', transaction_key, signature_data, 1, true)
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def create_xds(digest, transaction_key, **)
|
|
123
|
+
signature_data = @user_signature_handle.handle(digest).to_xml
|
|
124
|
+
build_upload_request('XDS', transaction_key, signature_data, 1, true)
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def create_xe2(digest, transaction_key, **)
|
|
128
|
+
signature_data = @user_signature_handle.handle(digest).to_xml
|
|
129
|
+
build_upload_request('XE2', transaction_key, signature_data, 1, true)
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
def create_xe3(digest, transaction_key, **)
|
|
133
|
+
signature_data = @user_signature_handle.handle(digest).to_xml
|
|
134
|
+
build_upload_request('XE3', transaction_key, signature_data, 1, true)
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
def create_ful(digest, transaction_key, file_format:)
|
|
138
|
+
signature_data = @user_signature_handle.handle(digest).to_xml
|
|
139
|
+
build_upload_request('FUL', transaction_key, signature_data, 1) do |order_details_builder|
|
|
140
|
+
order_details_builder.add_ful_order_params(file_format)
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
private
|
|
145
|
+
|
|
146
|
+
def build_download_request(order_type, start_date: nil, end_date: nil, &)
|
|
147
|
+
build_standard_request(order_type, start_date: start_date, end_date: end_date, &)
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
def build_upload_request(order_type, transaction_key, signature_data, num_segments, with_es = false)
|
|
151
|
+
auth_signature_handler = Epics::Handlers::AuthSignatureHandler.new(@client.keyring)
|
|
152
|
+
request_builder.add_container_secured do |xml_builder|
|
|
153
|
+
xml_builder.add_header do |header_builder|
|
|
154
|
+
header_builder.add_static do |static_builder|
|
|
155
|
+
static_builder.add_host_id @client.host_id
|
|
156
|
+
static_builder.add_random_nonce
|
|
157
|
+
static_builder.add_timestamp Time.now.utc
|
|
158
|
+
static_builder.add_partner_id @client.partner_id
|
|
159
|
+
static_builder.add_user_id @client.user_id
|
|
160
|
+
static_builder.add_product @client.product_name, @client.locale
|
|
161
|
+
static_builder.add_order_details do |order_details_builder|
|
|
162
|
+
add_order_type(order_details_builder, order_type, with_es)
|
|
163
|
+
if block_given?
|
|
164
|
+
yield order_details_builder
|
|
165
|
+
else
|
|
166
|
+
order_details_builder.add_standard_order_params
|
|
167
|
+
end
|
|
168
|
+
end
|
|
169
|
+
static_builder.add_bank_pubbey_digests(
|
|
170
|
+
@client.keyring.bank_authentication.version,
|
|
171
|
+
@digest_resolver.sign_digest(@client.keyring.bank_authentication),
|
|
172
|
+
@client.keyring.bank_encryption.version,
|
|
173
|
+
@digest_resolver.sign_digest(@client.keyring.bank_encryption)
|
|
174
|
+
)
|
|
175
|
+
static_builder.add_security_medium Epics::Builders::StaticBuilder::SECURITY_MEDIUM_0000
|
|
176
|
+
static_builder.add_num_segments num_segments
|
|
177
|
+
end
|
|
178
|
+
header_builder.add_mutable do |mutable_builder|
|
|
179
|
+
mutable_builder.add_transaction_phase Epics::Builders::MutableBuilder::PHASE_INITIALIZATION
|
|
180
|
+
end
|
|
181
|
+
end
|
|
182
|
+
xml_builder.add_body do |body_builder|
|
|
183
|
+
body_builder.add_data_transfer do |data_transfer_builder|
|
|
184
|
+
data_transfer_builder.add_data_encryption_info do |data_encryption_info_builder|
|
|
185
|
+
data_encryption_info_builder.add_encryption_pubkey_digest @client.keyring
|
|
186
|
+
data_encryption_info_builder.add_transaction_key transaction_key, @client.keyring
|
|
187
|
+
end
|
|
188
|
+
data_transfer_builder.add_signature_data signature_data, transaction_key
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
auth_signature_handler.handle(xml_builder)
|
|
192
|
+
end
|
|
193
|
+
end
|
|
194
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
class Epics::Factories::RequestFactory::V24 < Epics::Factories::RequestFactory::V2
|
|
2
|
+
NOT_IMPLEMENTED_ORDER_TYPES = %w[
|
|
3
|
+
xek yct zsr
|
|
4
|
+
].freeze
|
|
5
|
+
|
|
6
|
+
NOT_IMPLEMENTED_ORDER_TYPES.each do |type|
|
|
7
|
+
define_method("create_#{type}") { |*, **| raise Epics::VersionSupportError, 3.0 }
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
protected
|
|
11
|
+
|
|
12
|
+
def xml_builder
|
|
13
|
+
Epics::Builders::XmlBuilder::V24.new
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def add_order_type(order_details_builder, order_type, with_es = false)
|
|
17
|
+
order_attribute = case order_type
|
|
18
|
+
when 'INI', 'HIA'
|
|
19
|
+
Epics::Builders::OrderDetailsBuilder::ORDER_ATTRIBUTE_DZNNN
|
|
20
|
+
else
|
|
21
|
+
if with_es
|
|
22
|
+
Epics::Builders::OrderDetailsBuilder::ORDER_ATTRIBUTE_OZHNN
|
|
23
|
+
else
|
|
24
|
+
Epics::Builders::OrderDetailsBuilder::ORDER_ATTRIBUTE_DZHNN
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
order_details_builder.add_order_type order_type
|
|
29
|
+
order_details_builder.add_order_id @client.next_order_id
|
|
30
|
+
order_details_builder.add_order_attribute order_attribute
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
class Epics::Factories::RequestFactory::V25 < Epics::Factories::RequestFactory::V2
|
|
2
|
+
NOT_IMPLEMENTED_ORDER_TYPES = %w[
|
|
3
|
+
xek yct zsr
|
|
4
|
+
].freeze
|
|
5
|
+
|
|
6
|
+
NOT_IMPLEMENTED_ORDER_TYPES.each do |type|
|
|
7
|
+
define_method("create_#{type}") { |*, **| raise Epics::VersionSupportError, 3.0 }
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
protected
|
|
11
|
+
|
|
12
|
+
def xml_builder
|
|
13
|
+
Epics::Builders::XmlBuilder::V25.new
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def add_order_type(order_details_builder, order_type, with_es = false)
|
|
17
|
+
order_attribute = case order_type
|
|
18
|
+
when 'INI', 'HIA'
|
|
19
|
+
Epics::Builders::OrderDetailsBuilder::ORDER_ATTRIBUTE_DZNNN
|
|
20
|
+
else
|
|
21
|
+
if with_es
|
|
22
|
+
Epics::Builders::OrderDetailsBuilder::ORDER_ATTRIBUTE_OZHNN
|
|
23
|
+
else
|
|
24
|
+
Epics::Builders::OrderDetailsBuilder::ORDER_ATTRIBUTE_DZHNN
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
order_details_builder.add_order_type order_type
|
|
29
|
+
order_details_builder.add_order_attribute order_attribute
|
|
30
|
+
end
|
|
31
|
+
end
|