xmlconv 1.1.6 → 1.1.7
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/History.txt +4 -0
- data/lib/xmlconv/state/login.rb +1 -1
- data/lib/xmlconv/util/transaction.rb +3 -22
- data/lib/xmlconv/version.rb +1 -1
- data/test/data/umlaut_iso8859.xml +28 -0
- data/test/test_util/transaction.rb +35 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: af623000ac8163705c7fff8b81e9c7a5016f0ceb
|
4
|
+
data.tar.gz: 2ec74af40347dd5681fae3e28863d8b2dfbff777
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cdc78b73d3bc35b0219aa4ba25b493a979be9ff8ee25412fcdc58ed527a02f7068de7a7742fe8a849b48a9ffd92e3da4d8e9d2824c7eed304d60b32408f73221
|
7
|
+
data.tar.gz: e788fe936a974a20f9813bb4d109d66e8689eafbf8c3033988fcfc9794cf9a6bd52ae5cf300b69d5b9d238c8ffc17849ff53fe6fa7dffa557823828d79fef468
|
data/History.txt
CHANGED
data/lib/xmlconv/state/login.rb
CHANGED
@@ -14,7 +14,7 @@ module XmlConv
|
|
14
14
|
if session.request_method.eql?('POST')
|
15
15
|
xml_src = session.post_content
|
16
16
|
SBSM.debug "XmlConv::State::Login POST params were #{session.request_params}"
|
17
|
-
SBSM.debug " xml_src now #{xml_src}"
|
17
|
+
SBSM.debug " xml_src #{xml_src.encoding} now #{xml_src}"
|
18
18
|
unless xml_src.length == 0
|
19
19
|
transaction = XmlConv::Util::Transaction.new
|
20
20
|
transaction.domain = session.server_name
|
@@ -5,6 +5,7 @@
|
|
5
5
|
require 'odba'
|
6
6
|
require 'xmlconv/util/destination'
|
7
7
|
require 'xmlconv/util/mail'
|
8
|
+
require 'sbsm/logger'
|
8
9
|
|
9
10
|
module XmlConv
|
10
11
|
module Util
|
@@ -26,11 +27,8 @@ module XmlConv
|
|
26
27
|
reader_instance = Conversion.const_get(@reader)
|
27
28
|
writer_instance = Conversion.const_get(@writer)
|
28
29
|
@start_time = Time.now
|
29
|
-
|
30
|
-
|
31
|
-
else
|
32
|
-
@input = @input.encode("UTF-8")
|
33
|
-
end
|
30
|
+
@input = @input.force_encoding("UTF-8")
|
31
|
+
@input = @input.encode("UTF-8", :invalid=>:replace, :replace=>"?") if !@input.valid_encoding?
|
34
32
|
@input.gsub!(/\t+|\s+/, ' ')
|
35
33
|
input_model = reader_instance.parse(@input)
|
36
34
|
@arguments ||= []
|
@@ -45,23 +43,6 @@ module XmlConv
|
|
45
43
|
@destination.forget_credentials!
|
46
44
|
end
|
47
45
|
|
48
|
-
# Assumes its encoding once as ISO-8859-1 (latin1) at here,
|
49
|
-
# Because input_body is passed from ruby 1.8.6
|
50
|
-
def encode(input_body)
|
51
|
-
src = input_body.to_s
|
52
|
-
begin
|
53
|
-
# ISO-8859-1 (latin1) and WINDOWS-1252
|
54
|
-
src.encode('ISO-8859-1').force_encoding('UTF-8')
|
55
|
-
rescue Encoding::InvalidByteSequenceError,
|
56
|
-
Encoding::UndefinedConversionError
|
57
|
-
begin
|
58
|
-
src.force_encoding('ISO-8859-1').encode('UTF-8')
|
59
|
-
rescue
|
60
|
-
src
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
46
|
def invoice_ids
|
66
47
|
@model.invoices.collect do |inv|
|
67
48
|
inv.invoice_id.last.to_s.gsub /^0+/, ''
|
data/lib/xmlconv/version.rb
CHANGED
@@ -0,0 +1,28 @@
|
|
1
|
+
<?xml version "1.0" encoding="utf-8"?>
|
2
|
+
<customerOrder xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
3
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
4
|
+
compressionDesired="false" productDescriptionDesired="true"
|
5
|
+
backLogDesired="true" language="fr"
|
6
|
+
roundUpForCondition="true" version="1.0">
|
7
|
+
<client number="99" password="" />
|
8
|
+
<orderHeader deliveryDate="2017-06-06"
|
9
|
+
referenceNumber="060620172" mannerOfTransport="tour"
|
10
|
+
phoneCallDesired="false" urgent="false">
|
11
|
+
<deliveryAddress line1="136, Ch. De-La-Montagne"
|
12
|
+
line4="Pharmacie GOUDA" line5PostalCode="1224"
|
13
|
+
line5City="Ch�ne-Bougeries">
|
14
|
+
<addressLine2And3Text line2="Ch�ne-Bougeries" line3="GOUDA"
|
15
|
+
/>
|
16
|
+
</deliveryAddress>
|
17
|
+
</orderHeader>
|
18
|
+
<orderLines>
|
19
|
+
<productOrderLine orderQuantity="10"
|
20
|
+
roundUpForCondition="true" backLogDesired="true">
|
21
|
+
<pharmaCode id="3463433" />
|
22
|
+
</productOrderLine>
|
23
|
+
<productOrderLine orderQuantity="2"
|
24
|
+
roundUpForCondition="true" backLogDesired="true">
|
25
|
+
<pharmaCode id="3029702" />
|
26
|
+
</productOrderLine>
|
27
|
+
</orderLines>
|
28
|
+
</customerOrder>
|
@@ -4,6 +4,10 @@
|
|
4
4
|
$: << File.dirname(__FILE__)
|
5
5
|
$: << File.expand_path('..', File.dirname(__FILE__))
|
6
6
|
$: << File.expand_path('../../lib', File.dirname(__FILE__))
|
7
|
+
begin
|
8
|
+
require 'pry'
|
9
|
+
rescue LoadError
|
10
|
+
end
|
7
11
|
|
8
12
|
require 'xmlconv/util/transaction'
|
9
13
|
require 'mail'
|
@@ -100,6 +104,37 @@ module XmlConv
|
|
100
104
|
assert_equal(2, ::Mail::TestMailer.deliveries.size)
|
101
105
|
assert_equal([to_addr, 'bar'], ::Mail::TestMailer.deliveries.last.to)
|
102
106
|
end
|
107
|
+
def test_execute_utf_8_problem
|
108
|
+
input = flexmock('input')
|
109
|
+
reader = flexmock('reader')
|
110
|
+
model = flexmock('model')
|
111
|
+
writer = flexmock('writer')
|
112
|
+
output = Array.new
|
113
|
+
destination = flexmock('destination')
|
114
|
+
destination.should_receive(:deliver).with(output).once.and_return(output.to_s)
|
115
|
+
destination.should_receive(:forget_credentials!).once
|
116
|
+
test_data_dir = File.expand_path(File.join(File.dirname(__FILE__), '..', 'data'))
|
117
|
+
content = File.open("#{test_data_dir}/umlaut_iso8859.xml", 'rb').read
|
118
|
+
@transaction.input = content
|
119
|
+
@transaction.reader = reader
|
120
|
+
@transaction.writer = writer
|
121
|
+
@transaction.destination = destination
|
122
|
+
reader.should_receive(:parse).and_return(input)
|
123
|
+
reader.should_receive(:convert).with(input).once.and_return(model)
|
124
|
+
writer.should_receive(:convert).with(model).once.and_return(output)
|
125
|
+
time1 = Time.now
|
126
|
+
result = @transaction.execute
|
127
|
+
time2 = Time.now
|
128
|
+
assert(/Ch\?ne-Bougeries/.match(@transaction.input))
|
129
|
+
assert_raises("ArgumentError: invalid byte sequence in UTF-8") { /Ch?ne-Bougeries/.match(content) }
|
130
|
+
assert_equal(reader, @transaction.reader)
|
131
|
+
assert_equal(model, @transaction.model)
|
132
|
+
assert_equal(writer, @transaction.writer)
|
133
|
+
assert_equal([], output)
|
134
|
+
assert_equal("", result)
|
135
|
+
assert_in_delta(time1, @transaction.start_time, 0.001)
|
136
|
+
assert_in_delta(time2, @transaction.commit_time, 0.001)
|
137
|
+
end
|
103
138
|
end
|
104
139
|
end
|
105
140
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xmlconv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Masaomi Hatakeyama, Zeno R.R. Davatz, Niklaus Giger
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-06-
|
11
|
+
date: 2017-06-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: odba
|
@@ -386,6 +386,7 @@ files:
|
|
386
386
|
- test/data/polling.yaml
|
387
387
|
- test/data/sandoz.xundart@bbmb.ch.20110524001038.928592
|
388
388
|
- test/data/simple_email.txt
|
389
|
+
- test/data/umlaut_iso8859.xml
|
389
390
|
- test/suite.rb
|
390
391
|
- test/test_i2/address.rb
|
391
392
|
- test/test_i2/date.rb
|
@@ -442,6 +443,7 @@ test_files:
|
|
442
443
|
- test/data/polling.yaml
|
443
444
|
- test/data/sandoz.xundart@bbmb.ch.20110524001038.928592
|
444
445
|
- test/data/simple_email.txt
|
446
|
+
- test/data/umlaut_iso8859.xml
|
445
447
|
- test/suite.rb
|
446
448
|
- test/test_i2/address.rb
|
447
449
|
- test/test_i2/date.rb
|