savon-multipart 2.0.1 → 2.1.2
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 +5 -5
- data/.github/workflows/ci.yml +46 -0
- data/CHANGELOG.md +21 -4
- data/Gemfile +7 -10
- data/README.md +13 -12
- data/lib/savon/multipart/response.rb +35 -2
- data/lib/savon/multipart/version.rb +1 -3
- data/savon-multipart.gemspec +3 -3
- data/spec/fixtures/response/multipart.txt +103 -103
- data/spec/fixtures/response/simple_multipart.txt +25 -25
- data/spec/fixtures/response/simple_xop.txt +13 -0
- data/spec/fixtures/response/soap_fault.txt +7 -0
- data/spec/savon/soap/response_spec.rb +75 -50
- metadata +28 -13
- data/.travis.yml +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 206ff4ab739562cbbf2e15e23d4b7c3a762b08bc26a2fefb286de605603e18ca
|
4
|
+
data.tar.gz: e1c187a1fbe40e23be747a620ab8378d1dfec812f80b72ec9ae0964b02ce35bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3fa992c3e53d971d2ff58ef15a09f4ca96bb2b5f682eb11b40bf5848d2e1e487a2cb088455e923ac02d7da86d50d672a6a1c22ac0a2bc91a7aba5c9c6c5e6a4c
|
7
|
+
data.tar.gz: b85cef7fdcac332de45e1c58140a9855a18af9df988c2f20aefbc2c7630f88ebdf11f68305b0364d00472b29b2a6a72372ff1e9b9f9bf85776b7ec8493b8f315
|
@@ -0,0 +1,46 @@
|
|
1
|
+
name: CI
|
2
|
+
|
3
|
+
on:
|
4
|
+
pull_request:
|
5
|
+
|
6
|
+
push:
|
7
|
+
branches: [master]
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
# linting:
|
11
|
+
# runs-on: ubuntu-latest
|
12
|
+
|
13
|
+
# steps:
|
14
|
+
# - uses: actions/checkout@v1
|
15
|
+
|
16
|
+
# - name: Set up Ruby 2.7
|
17
|
+
# uses: ruby/setup-ruby@v1
|
18
|
+
# with:
|
19
|
+
# ruby-version: 2.7
|
20
|
+
# bundler-cache: true
|
21
|
+
|
22
|
+
# - name: Rubocop
|
23
|
+
# run: bundle exec rubocop --format progress
|
24
|
+
|
25
|
+
build:
|
26
|
+
# When we have linting, this is where we will place that
|
27
|
+
needs: []
|
28
|
+
runs-on: ubuntu-latest
|
29
|
+
strategy:
|
30
|
+
matrix:
|
31
|
+
ruby:
|
32
|
+
- 2.6
|
33
|
+
- 2.7
|
34
|
+
- '3.0'
|
35
|
+
- 3.1
|
36
|
+
- jruby-9.2
|
37
|
+
- jruby-9.3
|
38
|
+
|
39
|
+
steps:
|
40
|
+
- uses: actions/checkout@v1
|
41
|
+
- uses: ruby/setup-ruby@v1
|
42
|
+
with:
|
43
|
+
ruby-version: ${{ matrix.ruby }}
|
44
|
+
bundler-cache: true # 'bundle install' and cache
|
45
|
+
- name: Test
|
46
|
+
run: bundle exec rake
|
data/CHANGELOG.md
CHANGED
@@ -1,9 +1,26 @@
|
|
1
|
-
##
|
1
|
+
## 2.1.2 (2022-01-20)
|
2
2
|
|
3
|
-
*
|
4
|
-
|
3
|
+
* Loosen dependency on `mail` gem. ([#23](https://github.com/savonrb/savon-multipart/pull/23))
|
4
|
+
|
5
|
+
## 2.1.1
|
6
|
+
|
7
|
+
* Improve detection of multipart content-type header.
|
8
|
+
|
9
|
+
## 2.1.0
|
10
|
+
|
11
|
+
* Drops support for ruby 1.8.7
|
12
|
+
|
13
|
+
## 2.0.2
|
14
|
+
* Removes hardcoded version lock on Mail gem
|
5
15
|
|
6
|
-
## 2.0.0
|
16
|
+
## 2.0.0
|
7
17
|
* Rewrite of savon-multipart to work with Savon 2.0+
|
8
18
|
This includes all of the existing functionality in savon-multipart
|
9
19
|
for savon1, but in a way that will be easier to maintain.
|
20
|
+
|
21
|
+
## 0.9.7
|
22
|
+
|
23
|
+
* Initial version. Adds multipart support (SOAP with Attachments) to Savon v0.9.7.
|
24
|
+
Please test and provide feedback so we can merge this into Savon proper.
|
25
|
+
|
26
|
+
|
data/Gemfile
CHANGED
@@ -1,14 +1,11 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
gemspec
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
gem 'json'
|
11
|
-
gem 'racc'
|
12
|
-
gem 'rubysl'
|
13
|
-
gem 'rubinius-coverage'
|
4
|
+
if RUBY_VERSION > "3.1"
|
5
|
+
# net-smtp, net-pop and net-imap were removed from ruby 3.1 standard gems. See: https://github.com/rails/rails/pull/42366
|
6
|
+
# Can drop when https://github.com/mikel/mail/pull/1439 is resolved
|
7
|
+
gem "net-imap", require: false
|
8
|
+
gem "net-pop", require: false
|
9
|
+
gem "net-smtp", require: false
|
14
10
|
end
|
11
|
+
gem "rubocop", "~> 0.49.1"
|
data/README.md
CHANGED
@@ -1,28 +1,29 @@
|
|
1
|
-
Savon Multipart [](https://github.com/savonrb/savon-multipart/actions/workflows/ci.yml)
|
2
2
|
===============
|
3
3
|
|
4
4
|
Adds multipart support (SOAP with Attachments) to [Savon](https://github.com/savonrb/savon).
|
5
5
|
Please test and provide feedback so we can support as many multipart-soap messages as possible.
|
6
6
|
|
7
|
+
Installation
|
8
|
+
------------
|
7
9
|
|
8
|
-
|
9
|
-
------
|
10
|
-
|
11
|
-
Recently Savon launched a rewrite that broke compatibility with savon-multipart. If you're using savon
|
12
|
-
version 1, this should just work, but if you'd like to use Savon2, you will probably want to specify
|
13
|
-
something like this in your Gemfile
|
14
|
-
|
10
|
+
Savon Multipart is available through [Rubygems](https://rubygems.org/gems/savon-multipart) and can be installed via:
|
15
11
|
|
16
12
|
```
|
17
|
-
gem
|
13
|
+
$ gem install savon-multipart
|
18
14
|
```
|
19
15
|
|
16
|
+
Or in your `Gemfile`:
|
20
17
|
|
21
|
-
|
18
|
+
```ruby
|
19
|
+
gem 'savon-multipart'
|
20
|
+
```
|
21
|
+
|
22
|
+
Usage
|
22
23
|
------------
|
23
24
|
|
24
|
-
|
25
|
+
Just require the gem 'savon-multipart', which automatically requires 'savon' as well:
|
25
26
|
|
26
27
|
```
|
27
|
-
|
28
|
+
require 'savon-multipart'
|
28
29
|
```
|
@@ -22,7 +22,12 @@ module Savon
|
|
22
22
|
def xml
|
23
23
|
if multipart?
|
24
24
|
parse_body unless @has_parsed_body
|
25
|
-
|
25
|
+
if xop?
|
26
|
+
parse_xop unless @has_parsed_xop
|
27
|
+
@xop_body
|
28
|
+
else
|
29
|
+
@parts.first.body.to_s
|
30
|
+
end
|
26
31
|
else
|
27
32
|
super
|
28
33
|
end
|
@@ -30,7 +35,16 @@ module Savon
|
|
30
35
|
|
31
36
|
private
|
32
37
|
def multipart?
|
33
|
-
!(http.headers['content-type'] =~ /^multipart/).nil?
|
38
|
+
!(http.headers['content-type'] =~ /^multipart/im).nil?
|
39
|
+
end
|
40
|
+
|
41
|
+
def xop?
|
42
|
+
if multipart?
|
43
|
+
parse_body unless @has_parsed_body
|
44
|
+
!(@parts.first.header['content-type'].to_s =~ /^application\/xop\+xml/i).nil?
|
45
|
+
else
|
46
|
+
false
|
47
|
+
end
|
34
48
|
end
|
35
49
|
|
36
50
|
def boundary
|
@@ -45,6 +59,25 @@ module Savon
|
|
45
59
|
).body.split!(boundary).parts
|
46
60
|
@has_parsed_body = true
|
47
61
|
end
|
62
|
+
|
63
|
+
def parse_xop
|
64
|
+
xml = @parts.first.body.to_s
|
65
|
+
parsed = Nokogiri.XML(xml)
|
66
|
+
xop_elements = parsed.xpath('//xop:Include', xop: "http://www.w3.org/2004/08/xop/include")
|
67
|
+
if xop_elements.count == 0
|
68
|
+
@xop_body = @parts.first.body.to_s
|
69
|
+
@has_parsed_xop = true
|
70
|
+
return
|
71
|
+
end
|
72
|
+
xop_elements.each do |xop_element|
|
73
|
+
href = xop_element.attributes['href'].to_s
|
74
|
+
cid = href[4..-1]
|
75
|
+
data = @parts.find { |p| p.header['content-id'].to_s == "<#{cid}>" }.body.to_s
|
76
|
+
xop_element.parent.content = Base64.encode64(data).chomp
|
77
|
+
end
|
78
|
+
@xop_body = parsed.to_s
|
79
|
+
@has_parsed_xop = true
|
80
|
+
end
|
48
81
|
end
|
49
82
|
end
|
50
83
|
end
|
data/savon-multipart.gemspec
CHANGED
@@ -11,13 +11,13 @@ Gem::Specification.new do |s|
|
|
11
11
|
s.homepage = "http://savonrb.com"
|
12
12
|
s.summary = "Heavy metal Ruby SOAP client with multipart support"
|
13
13
|
s.description = "Adds multipart support (SOAP with Attachments) to Savon"
|
14
|
-
|
15
|
-
s.rubyforge_project = s.name
|
14
|
+
s.required_ruby_version = '>= 1.9.2'
|
16
15
|
|
17
16
|
s.add_dependency "savon", "~> 2"
|
18
|
-
s.add_dependency "mail", "2
|
17
|
+
s.add_dependency "mail", "~> 2"
|
19
18
|
|
20
19
|
s.add_development_dependency "rake"
|
20
|
+
s.add_development_dependency "pry"
|
21
21
|
s.add_development_dependency "rspec"
|
22
22
|
s.add_development_dependency "autotest"
|
23
23
|
|
@@ -1,103 +1,103 @@
|
|
1
|
-
----==_mimepart_4d416ae62fd32_201a8043814c4724
|
2
|
-
Date: Thu, 27 Jan 2011 13:53:58 +0100
|
3
|
-
Message-ID: <4d416ae631391_201a8043814c482c@Martin-iMac.local.mail>
|
4
|
-
Mime-Version: 1.0
|
5
|
-
Content-Type: text/xml;
|
6
|
-
charset=utf-8
|
7
|
-
Content-Transfer-Encoding: 7bit
|
8
|
-
content-id: soap_xml_part
|
9
|
-
|
10
|
-
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:wsdl="http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-2" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header><ns1:TransactionID soapenv:actor="" soapenv:mustUnderstand="1" xsi:type="xsd:string" xmlns:ns1="http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-2">2011012713535811111111111</ns1:TransactionID></soapenv:Header><soapenv:Body><SubmitReq xmlns="http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-2"><MM7Version>5.3.0</MM7Version><SenderIdentification><VASPID>messaging</VASPID><VASID>ADM</VASID><SenderAddress><ShortCode>1111</ShortCode></SenderAddress></SenderIdentification><Recipients><To><Number>11111111111</Number></To></Recipients><ServiceCode>1</ServiceCode><MessageClass>Personal</MessageClass><ExpiryDate>2011-01-28T13:53:58Z</ExpiryDate><DeliveryReport>false</DeliveryReport><ReadReply>false</ReadReply><Priority>Normal</Priority><Subject>Test MMS via Savon</Subject><ChargedParty>Sender</ChargedParty><Content href="cid:attachment_1" allowAdaptations="true"/></SubmitReq></soapenv:Body></soapenv:Envelope>
|
11
|
-
|
12
|
-
----==_mimepart_4d416ae62fd32_201a8043814c4724
|
13
|
-
Date: Thu, 27 Jan 2011 13:53:58 +0100
|
14
|
-
Message-ID: <4d416ae63586d_201a8043814c518@Martin-iMac.local.mail>
|
15
|
-
Mime-Version: 1.0
|
16
|
-
Content-Type: multipart/mixed;
|
17
|
-
boundary="--==_mimepart_4d416ae628621_201a8043814c46ea";
|
18
|
-
charset=UTF-8
|
19
|
-
Content-Transfer-Encoding: 7bit
|
20
|
-
content-id: <attachment_1>
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
----==_mimepart_4d416ae628621_201a8043814c46ea
|
25
|
-
Date: Thu, 27 Jan 2011 13:53:58 +0100
|
26
|
-
Message-ID: <4d416ae635039_201a8043814c507d@Martin-iMac.local.mail>
|
27
|
-
Mime-Version: 1.0
|
28
|
-
Content-Type: application/smil;
|
29
|
-
charset=UTF-8
|
30
|
-
Content-Transfer-Encoding: 7bit
|
31
|
-
content-id: smil_1.smil
|
32
|
-
|
33
|
-
<smil>
|
34
|
-
<head>
|
35
|
-
<layout>
|
36
|
-
<root-layout width="240" height="320"/>
|
37
|
-
<region id="Image" top="0%" left="0%" height="70%" width="100%" fit="meet"/>
|
38
|
-
<region id="Text" top="70%" left="0%" height="30%" width="100%" fit="scroll"/>
|
39
|
-
</layout>
|
40
|
-
</head>
|
41
|
-
<body>
|
42
|
-
<par dur="5s"><img src="cid:github_logo.gif" region="Image"></img><text src="cid:text_0.txt" region="Text"><param name="hAlign" value="right"/><param name="textsize" value="small"/></text></par>
|
43
|
-
</body>
|
44
|
-
</smil>
|
45
|
-
|
46
|
-
----==_mimepart_4d416ae628621_201a8043814c46ea
|
47
|
-
Date: Thu, 27 Jan 2011 13:53:58 +0100
|
48
|
-
Mime-Version: 1.0
|
49
|
-
Content-Type: image/gif;
|
50
|
-
charset=UTF-8;
|
51
|
-
filename=mobile_baby_logo.gif
|
52
|
-
Content-Transfer-Encoding: base64
|
53
|
-
Content-Disposition: attachment;
|
54
|
-
filename=github_logo.gif
|
55
|
-
content-id: github_logo.gif
|
56
|
-
|
57
|
-
R0lGODlhZQAtALMAAPz8/MTExFBQUPn5+ZaWlgAAAPf393x8fNTU1LKysqKi
|
58
|
-
ouXl5YuLiyUlJTg4OGNjYyH5BAAAAAAALAAAAABlAC0AAAT/EMhJq7046827
|
59
|
-
/xLSFIUDAgKpnl+gkgf7GW8JHrXcLXWid4xaAfHBvX6cWgC5Mb6WHieJqVFS
|
60
|
-
M8EaMZq7XqxeC+9lKnbDFDCaglA5BhPDYT5XWKSFdfqpFxssNTEVeH0SaoUZ
|
61
|
-
gXdneoeIXy+CFISFjh4JBw4ODwwLFAkCEnRzBAALB1ludFCECwx0WxQBowdQ
|
62
|
-
E7SlAFaYdXAZCUIkDw8OK7ovDwAuwSqCeA9CDp4TCop7boYvKUIMGNXMQhIj
|
63
|
-
zcrgMKLmL7HLKnYUxdjH6QWhFd/zUwDw5+zMzvgFGkzoV8CWhH025M3zMWEA
|
64
|
-
QGMIYxAU8g+gIIIG9ZHJBtAXAAI1/5KZGqeigciIAAwEIPhgZYBpeEgI2PZC
|
65
|
-
YDk+7zYqLPmAZLsJNANSGKOCoUZyE6xNCumrTY+bKjIiLCPEFjSdR4VV8CkJ
|
66
|
-
ZdJIi45QuMfP0VSOJDL6zHMQWQWvWQtI2jkXndhrJExgfKvT0VUVWxDa/Fp0
|
67
|
-
Aly6YY3lxLZ3cV60BQeBwePuY40/bZFCrguAkmMbjQ33xTkBGE6iJR2srZf5
|
68
|
-
HGHXS++KZmx2dNQKqdJO+GtuWmu5eIFLlv1bb+14jvAYXCuk8u+5Sm8xKg6V
|
69
|
-
hPO4VEn/LuARwICYhflqRjxc8ezHO0WeT3gIdT4KQfMywCwe9k7W0oljh1zA
|
70
|
-
t2nkNU0zAP9CBYg0wIHuPXDgggweGBGDaxEwQAACBPBdDQ0OSMaB8cmlAG95
|
71
|
-
HRjMAwcwZyGDBGWY4YMLEvjEhS+suOEAZKXzhkMA3YhiDQqoyCCLB+amBIwq
|
72
|
-
yOjGgg/d+NCJDLon1wI+athMk+BYiIeRRR44ETNK4tOjiiCqIMB8DTLFYI1R
|
73
|
-
EUlChkKcGUwDPr2RYDBfqigkRT9qoomCDVJIBgEGDECMnjou2AChhQ6wADFw
|
74
|
-
CtDjoHtOiOiEAujZiY//pSNAlJx26umnoIbqFEAShmrqqaiaSqACCGgJ4qYD
|
75
|
-
IKCaAwkoWuKhpdKoWgMEgNLqdw3UOoCvGRKwa60I9HSohQgIMMz/Aa02mwAB
|
76
|
-
DZzY7AEDyAEnrQz2kKEUN6qWCQMDHqosttSatAm1J6rGJ7sNMgAnMQQssK0A
|
77
|
-
cCYggiZwIiACAdQ6EGgAJg2ArwO3CotjlvHO2ACsA1AL6wKqidAAlBPCSzCc
|
78
|
-
UMK7oL3SZJtsA9gOe+i/Jjvwb7oKivBAAgXHWiGSL+S6YFCwziphT78OIG+J
|
79
|
-
JR9Ibas9Udujxwcq0AC5hjbAIL4wlwo1rxLz6jLPPgox5koMEMj0yCb1xGC6
|
80
|
-
vI7dQKsPG3BoxNWabfPaC/akdKlyU302vkoP47TBcO6t5jyBfgxniQr3VCLE
|
81
|
-
bCOg9CYcD80gzEGXi3G5UTtYrd0IUDwvoeHDyquj2gB9KYKF+S67QMDlYjvL
|
82
|
-
0O4+gO8BRr90oAGq9RiAAocvsKhJIkBr+MpnTzgvzCEDzaABHTa3oMVwkntr
|
83
|
-
38juapLRDxvqANlMC9+3hPj2rTLz1RMMcNs+F/z8oZMv31M0ZDKIwAEP1IkJ
|
84
|
-
J5OfTiLX0zI57bQAM6koAyRqlQE+FL9Ana5/CGIA1yZHogPND1CeWkDgUkXB
|
85
|
-
ClowQxEAADs=
|
86
|
-
|
87
|
-
|
88
|
-
----==_mimepart_4d416ae628621_201a8043814c46ea
|
89
|
-
Date: Thu, 27 Jan 2011 13:53:58 +0100
|
90
|
-
Message-ID: <4d416ae633ce8_201a8043814c49c7@Martin-iMac.local.mail>
|
91
|
-
Mime-Version: 1.0
|
92
|
-
Content-Type: text/plain;
|
93
|
-
charset=UTF-8
|
94
|
-
Content-Transfer-Encoding: 7bit
|
95
|
-
content-id: text_0.txt
|
96
|
-
|
97
|
-
This is a test message from Github
|
98
|
-
|
99
|
-
----==_mimepart_4d416ae628621_201a8043814c46ea--
|
100
|
-
|
101
|
-
|
102
|
-
----==_mimepart_4d416ae62fd32_201a8043814c4724--
|
103
|
-
|
1
|
+
----==_mimepart_4d416ae62fd32_201a8043814c4724
|
2
|
+
Date: Thu, 27 Jan 2011 13:53:58 +0100
|
3
|
+
Message-ID: <4d416ae631391_201a8043814c482c@Martin-iMac.local.mail>
|
4
|
+
Mime-Version: 1.0
|
5
|
+
Content-Type: text/xml;
|
6
|
+
charset=utf-8
|
7
|
+
Content-Transfer-Encoding: 7bit
|
8
|
+
content-id: soap_xml_part
|
9
|
+
|
10
|
+
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:wsdl="http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-2" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header><ns1:TransactionID soapenv:actor="" soapenv:mustUnderstand="1" xsi:type="xsd:string" xmlns:ns1="http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-2">2011012713535811111111111</ns1:TransactionID></soapenv:Header><soapenv:Body><SubmitReq xmlns="http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-2"><MM7Version>5.3.0</MM7Version><SenderIdentification><VASPID>messaging</VASPID><VASID>ADM</VASID><SenderAddress><ShortCode>1111</ShortCode></SenderAddress></SenderIdentification><Recipients><To><Number>11111111111</Number></To></Recipients><ServiceCode>1</ServiceCode><MessageClass>Personal</MessageClass><ExpiryDate>2011-01-28T13:53:58Z</ExpiryDate><DeliveryReport>false</DeliveryReport><ReadReply>false</ReadReply><Priority>Normal</Priority><Subject>Test MMS via Savon</Subject><ChargedParty>Sender</ChargedParty><Content href="cid:attachment_1" allowAdaptations="true"/></SubmitReq></soapenv:Body></soapenv:Envelope>
|
11
|
+
|
12
|
+
----==_mimepart_4d416ae62fd32_201a8043814c4724
|
13
|
+
Date: Thu, 27 Jan 2011 13:53:58 +0100
|
14
|
+
Message-ID: <4d416ae63586d_201a8043814c518@Martin-iMac.local.mail>
|
15
|
+
Mime-Version: 1.0
|
16
|
+
Content-Type: multipart/mixed;
|
17
|
+
boundary="--==_mimepart_4d416ae628621_201a8043814c46ea";
|
18
|
+
charset=UTF-8
|
19
|
+
Content-Transfer-Encoding: 7bit
|
20
|
+
content-id: <attachment_1>
|
21
|
+
|
22
|
+
|
23
|
+
|
24
|
+
----==_mimepart_4d416ae628621_201a8043814c46ea
|
25
|
+
Date: Thu, 27 Jan 2011 13:53:58 +0100
|
26
|
+
Message-ID: <4d416ae635039_201a8043814c507d@Martin-iMac.local.mail>
|
27
|
+
Mime-Version: 1.0
|
28
|
+
Content-Type: application/smil;
|
29
|
+
charset=UTF-8
|
30
|
+
Content-Transfer-Encoding: 7bit
|
31
|
+
content-id: smil_1.smil
|
32
|
+
|
33
|
+
<smil>
|
34
|
+
<head>
|
35
|
+
<layout>
|
36
|
+
<root-layout width="240" height="320"/>
|
37
|
+
<region id="Image" top="0%" left="0%" height="70%" width="100%" fit="meet"/>
|
38
|
+
<region id="Text" top="70%" left="0%" height="30%" width="100%" fit="scroll"/>
|
39
|
+
</layout>
|
40
|
+
</head>
|
41
|
+
<body>
|
42
|
+
<par dur="5s"><img src="cid:github_logo.gif" region="Image"></img><text src="cid:text_0.txt" region="Text"><param name="hAlign" value="right"/><param name="textsize" value="small"/></text></par>
|
43
|
+
</body>
|
44
|
+
</smil>
|
45
|
+
|
46
|
+
----==_mimepart_4d416ae628621_201a8043814c46ea
|
47
|
+
Date: Thu, 27 Jan 2011 13:53:58 +0100
|
48
|
+
Mime-Version: 1.0
|
49
|
+
Content-Type: image/gif;
|
50
|
+
charset=UTF-8;
|
51
|
+
filename=mobile_baby_logo.gif
|
52
|
+
Content-Transfer-Encoding: base64
|
53
|
+
Content-Disposition: attachment;
|
54
|
+
filename=github_logo.gif
|
55
|
+
content-id: github_logo.gif
|
56
|
+
|
57
|
+
R0lGODlhZQAtALMAAPz8/MTExFBQUPn5+ZaWlgAAAPf393x8fNTU1LKysqKi
|
58
|
+
ouXl5YuLiyUlJTg4OGNjYyH5BAAAAAAALAAAAABlAC0AAAT/EMhJq7046827
|
59
|
+
/xLSFIUDAgKpnl+gkgf7GW8JHrXcLXWid4xaAfHBvX6cWgC5Mb6WHieJqVFS
|
60
|
+
M8EaMZq7XqxeC+9lKnbDFDCaglA5BhPDYT5XWKSFdfqpFxssNTEVeH0SaoUZ
|
61
|
+
gXdneoeIXy+CFISFjh4JBw4ODwwLFAkCEnRzBAALB1ludFCECwx0WxQBowdQ
|
62
|
+
E7SlAFaYdXAZCUIkDw8OK7ovDwAuwSqCeA9CDp4TCop7boYvKUIMGNXMQhIj
|
63
|
+
zcrgMKLmL7HLKnYUxdjH6QWhFd/zUwDw5+zMzvgFGkzoV8CWhH025M3zMWEA
|
64
|
+
QGMIYxAU8g+gIIIG9ZHJBtAXAAI1/5KZGqeigciIAAwEIPhgZYBpeEgI2PZC
|
65
|
+
YDk+7zYqLPmAZLsJNANSGKOCoUZyE6xNCumrTY+bKjIiLCPEFjSdR4VV8CkJ
|
66
|
+
ZdJIi45QuMfP0VSOJDL6zHMQWQWvWQtI2jkXndhrJExgfKvT0VUVWxDa/Fp0
|
67
|
+
Aly6YY3lxLZ3cV60BQeBwePuY40/bZFCrguAkmMbjQ33xTkBGE6iJR2srZf5
|
68
|
+
HGHXS++KZmx2dNQKqdJO+GtuWmu5eIFLlv1bb+14jvAYXCuk8u+5Sm8xKg6V
|
69
|
+
hPO4VEn/LuARwICYhflqRjxc8ezHO0WeT3gIdT4KQfMywCwe9k7W0oljh1zA
|
70
|
+
t2nkNU0zAP9CBYg0wIHuPXDgggweGBGDaxEwQAACBPBdDQ0OSMaB8cmlAG95
|
71
|
+
HRjMAwcwZyGDBGWY4YMLEvjEhS+suOEAZKXzhkMA3YhiDQqoyCCLB+amBIwq
|
72
|
+
yOjGgg/d+NCJDLon1wI+athMk+BYiIeRRR44ETNK4tOjiiCqIMB8DTLFYI1R
|
73
|
+
EUlChkKcGUwDPr2RYDBfqigkRT9qoomCDVJIBgEGDECMnjou2AChhQ6wADFw
|
74
|
+
CtDjoHtOiOiEAujZiY//pSNAlJx26umnoIbqFEAShmrqqaiaSqACCGgJ4qYD
|
75
|
+
IKCaAwkoWuKhpdKoWgMEgNLqdw3UOoCvGRKwa60I9HSohQgIMMz/Aa02mwAB
|
76
|
+
DZzY7AEDyAEnrQz2kKEUN6qWCQMDHqosttSatAm1J6rGJ7sNMgAnMQQssK0A
|
77
|
+
cCYggiZwIiACAdQ6EGgAJg2ArwO3CotjlvHO2ACsA1AL6wKqidAAlBPCSzCc
|
78
|
+
UMK7oL3SZJtsA9gOe+i/Jjvwb7oKivBAAgXHWiGSL+S6YFCwziphT78OIG+J
|
79
|
+
JR9Ibas9Udujxwcq0AC5hjbAIL4wlwo1rxLz6jLPPgox5koMEMj0yCb1xGC6
|
80
|
+
vI7dQKsPG3BoxNWabfPaC/akdKlyU302vkoP47TBcO6t5jyBfgxniQr3VCLE
|
81
|
+
bCOg9CYcD80gzEGXi3G5UTtYrd0IUDwvoeHDyquj2gB9KYKF+S67QMDlYjvL
|
82
|
+
0O4+gO8BRr90oAGq9RiAAocvsKhJIkBr+MpnTzgvzCEDzaABHTa3oMVwkntr
|
83
|
+
38juapLRDxvqANlMC9+3hPj2rTLz1RMMcNs+F/z8oZMv31M0ZDKIwAEP1IkJ
|
84
|
+
J5OfTiLX0zI57bQAM6koAyRqlQE+FL9Ana5/CGIA1yZHogPND1CeWkDgUkXB
|
85
|
+
ClowQxEAADs=
|
86
|
+
|
87
|
+
|
88
|
+
----==_mimepart_4d416ae628621_201a8043814c46ea
|
89
|
+
Date: Thu, 27 Jan 2011 13:53:58 +0100
|
90
|
+
Message-ID: <4d416ae633ce8_201a8043814c49c7@Martin-iMac.local.mail>
|
91
|
+
Mime-Version: 1.0
|
92
|
+
Content-Type: text/plain;
|
93
|
+
charset=UTF-8
|
94
|
+
Content-Transfer-Encoding: 7bit
|
95
|
+
content-id: text_0.txt
|
96
|
+
|
97
|
+
This is a test message from Github
|
98
|
+
|
99
|
+
----==_mimepart_4d416ae628621_201a8043814c46ea--
|
100
|
+
|
101
|
+
|
102
|
+
----==_mimepart_4d416ae62fd32_201a8043814c4724--
|
103
|
+
|
@@ -1,25 +1,25 @@
|
|
1
|
-
----==_mimepart_4d416ae62fd32_201a8043814c4724
|
2
|
-
Date: Thu, 27 Jan 2011 13:53:58 +0100
|
3
|
-
Message-ID: <4d416ae631391_201a8043814c482c@Martin-iMac.local.mail>
|
4
|
-
Mime-Version: 1.0
|
5
|
-
Content-Type: text/xml;
|
6
|
-
charset=utf-8
|
7
|
-
Content-Transfer-Encoding: 7bit
|
8
|
-
content-id: soap_xml_part
|
9
|
-
|
10
|
-
<?xml version="1.0" encoding="UTF-8"?><envelope ><header></header><body><SubmitReq>true</SubmitReq></body></envelope>
|
11
|
-
|
12
|
-
----==_mimepart_4d416ae628621_201a8043814c46ea
|
13
|
-
Date: Thu, 27 Jan 2011 13:53:58 +0100
|
14
|
-
Message-ID: <4d416ae633ce8_201a8043814c49c7@Martin-iMac.local.mail>
|
15
|
-
Mime-Version: 1.0
|
16
|
-
Content-Type: text/plain;
|
17
|
-
charset=UTF-8
|
18
|
-
Content-Transfer-Encoding: 7bit
|
19
|
-
content-id: text_0.txt
|
20
|
-
|
21
|
-
This is a test message from Github
|
22
|
-
|
23
|
-
----==_mimepart_4d416ae628621_201a8043814c46ea--
|
24
|
-
|
25
|
-
----==_mimepart_4d416ae62fd32_201a8043814c4724--
|
1
|
+
----==_mimepart_4d416ae62fd32_201a8043814c4724
|
2
|
+
Date: Thu, 27 Jan 2011 13:53:58 +0100
|
3
|
+
Message-ID: <4d416ae631391_201a8043814c482c@Martin-iMac.local.mail>
|
4
|
+
Mime-Version: 1.0
|
5
|
+
Content-Type: text/xml;
|
6
|
+
charset=utf-8
|
7
|
+
Content-Transfer-Encoding: 7bit
|
8
|
+
content-id: soap_xml_part
|
9
|
+
|
10
|
+
<?xml version="1.0" encoding="UTF-8"?><envelope ><header></header><body><SubmitReq>true</SubmitReq></body></envelope>
|
11
|
+
|
12
|
+
----==_mimepart_4d416ae628621_201a8043814c46ea
|
13
|
+
Date: Thu, 27 Jan 2011 13:53:58 +0100
|
14
|
+
Message-ID: <4d416ae633ce8_201a8043814c49c7@Martin-iMac.local.mail>
|
15
|
+
Mime-Version: 1.0
|
16
|
+
Content-Type: text/plain;
|
17
|
+
charset=UTF-8
|
18
|
+
Content-Transfer-Encoding: 7bit
|
19
|
+
content-id: text_0.txt
|
20
|
+
|
21
|
+
This is a test message from Github
|
22
|
+
|
23
|
+
----==_mimepart_4d416ae628621_201a8043814c46ea--
|
24
|
+
|
25
|
+
----==_mimepart_4d416ae62fd32_201a8043814c4724--
|
@@ -0,0 +1,13 @@
|
|
1
|
+
----==_mimepart_4d416ae62fd32_201a8043814c4724
|
2
|
+
Content-ID: <http://tempuri.org/0>
|
3
|
+
Content-Transfer-Encoding: 8bit
|
4
|
+
Content-Type: application/xop+xml;charset=utf-8;type="text/xml"
|
5
|
+
|
6
|
+
<?xml version="1.0" encoding="UTF-8"?><envelope ><header></header><body><BinaryData><xop:Include href="cid:http://tempuri.org/1/123456789" xmlns:xop="http://www.w3.org/2004/08/xop/include"/></BinaryData></body></envelope>
|
7
|
+
----==_mimepart_4d416ae62fd32_201a8043814c4724
|
8
|
+
Content-ID: <http://tempuri.org/1/123456789>
|
9
|
+
Content-Transfer-Encoding: binary
|
10
|
+
Content-Type: application/octet-stream
|
11
|
+
|
12
|
+
BinaryDataGoesHere
|
13
|
+
----==_mimepart_4d416ae62fd32_201a8043814c4724--
|
@@ -0,0 +1,7 @@
|
|
1
|
+
----==_mimepart_4d416ae62fd32_201a8043814c4724
|
2
|
+
Content-Type: text/xml; charset=UTF-8
|
3
|
+
Content-Transfer-Encoding: binary
|
4
|
+
Content-ID: <0.1bccd0fe5cc64dd5b5910cd3cc23a762332ffb50bdd8fe1b@apache.org>
|
5
|
+
|
6
|
+
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><soapenv:Fault xmlns:axis2ns1="http://schemas.xmlsoap.org/soap/envelope/"><faultcode>axis2ns1:Client</faultcode><faultstring>The service cannot be found for the endpoint reference (EPR) http://110.74.218.219:8080/EngineWS/services/SoapGWAppImp.SoapGWAppImpHttpSoap12Endpoint/</faultstring><detail /></soapenv:Fault></soapenv:Body></soapenv:Envelope>
|
7
|
+
----==_mimepart_4d416ae62fd32_201a8043814c4724
|
@@ -1,71 +1,96 @@
|
|
1
1
|
require 'savon-multipart'
|
2
2
|
|
3
|
-
describe Savon::Multipart::Response do
|
3
|
+
RSpec.describe Savon::Multipart::Response do
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
raise ArgumentError, "Unable to load: #{path}" unless File.exist? path
|
9
|
-
@body = File.read(path)
|
10
|
-
end
|
5
|
+
let(:header) {{ "Content-Type" => 'multipart/related; boundary="--==_mimepart_4d416ae62fd32_201a8043814c4724"; charset=UTF-8; type="text/xml"' }}
|
6
|
+
let(:body) { File.read(path) }
|
7
|
+
let(:response) { soap_response(:headers => header, :body => body) }
|
11
8
|
|
12
|
-
|
13
|
-
|
14
|
-
response
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
9
|
+
def soap_response(options = {})
|
10
|
+
defaults = { :code => 200, :headers => {}, :body => "" }
|
11
|
+
response = defaults.merge options
|
12
|
+
globals = {
|
13
|
+
:multipart => true,
|
14
|
+
:raise_errors => true,
|
15
|
+
:convert_response_tags_to => lambda { |tag| tag.snakecase.to_sym}
|
16
|
+
}
|
17
|
+
http = HTTPI::Response.new(response[:code], response[:headers], response[:body])
|
19
18
|
|
20
|
-
|
21
|
-
body = File.read(File.expand_path('../../../fixtures/response/simple_multipart.txt', __FILE__))
|
22
|
-
response = soap_response :headers => @header, :body => body
|
23
|
-
response.xml.class.should == String
|
19
|
+
Savon::Multipart::Response.new(http, globals, {})
|
24
20
|
end
|
25
21
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
22
|
+
context "multipart" do
|
23
|
+
let(:path) { File.expand_path("../../../fixtures/response/multipart.txt", __FILE__) }
|
24
|
+
|
25
|
+
it "parses without Exception" do
|
26
|
+
expect(response.xml.strip).to eq('<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:wsdl="http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-2" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header><ns1:TransactionID soapenv:actor="" soapenv:mustUnderstand="1" xsi:type="xsd:string" xmlns:ns1="http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-2">2011012713535811111111111</ns1:TransactionID></soapenv:Header><soapenv:Body><SubmitReq xmlns="http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-2"><MM7Version>5.3.0</MM7Version><SenderIdentification><VASPID>messaging</VASPID><VASID>ADM</VASID><SenderAddress><ShortCode>1111</ShortCode></SenderAddress></SenderIdentification><Recipients><To><Number>11111111111</Number></To></Recipients><ServiceCode>1</ServiceCode><MessageClass>Personal</MessageClass><ExpiryDate>2011-01-28T13:53:58Z</ExpiryDate><DeliveryReport>false</DeliveryReport><ReadReply>false</ReadReply><Priority>Normal</Priority><Subject>Test MMS via Savon</Subject><ChargedParty>Sender</ChargedParty><Content href="cid:attachment_1" allowAdaptations="true"/></SubmitReq></soapenv:Body></soapenv:Envelope>')
|
27
|
+
expect(response.parts.length).to eq(2)
|
28
|
+
expect(response.parts[1].parts.length).to eq(3)
|
29
|
+
expect(response.parts[1].parts[2].body.decoded.strip).to eq("This is a test message from Github")
|
30
|
+
end
|
31
|
+
|
32
|
+
it "returns the attachments" do
|
33
|
+
expect(response.attachments.size).to eq(1)
|
34
|
+
end
|
35
|
+
|
36
|
+
it "only parses the SOAP body once" do
|
37
|
+
Mail::Part.stub(:new).and_return(double(Mail::Part).as_null_object)
|
38
|
+
expect(Mail::Part).to receive(:new).exactly(1).times
|
39
|
+
5.times { response.attachments }
|
40
|
+
end
|
31
41
|
end
|
32
42
|
|
33
|
-
|
34
|
-
|
35
|
-
|
43
|
+
context "simple multipart" do
|
44
|
+
let(:path) { File.expand_path('../../../fixtures/response/simple_multipart.txt', __FILE__) }
|
45
|
+
|
46
|
+
it "returns a String from the #xml method" do
|
47
|
+
expect(response.xml.class).to eq(String)
|
48
|
+
end
|
49
|
+
|
50
|
+
it "returns a Hash from the #body method" do
|
51
|
+
expect(response.body.class).to eq(Hash)
|
52
|
+
expect(response.body).to eq({:submit_req => true})
|
53
|
+
end
|
36
54
|
end
|
37
55
|
|
38
|
-
|
39
|
-
|
40
|
-
body = File.read(File.expand_path('../../../fixtures/response/not_multipart.txt', __FILE__))
|
41
|
-
response = soap_response :headers => header, :body => body
|
56
|
+
context "simple xop" do
|
57
|
+
let(:path) { File.expand_path('../../../fixtures/response/simple_xop.txt', __FILE__) }
|
42
58
|
|
43
|
-
|
44
|
-
|
45
|
-
|
59
|
+
it "returns a String from the #xml method" do
|
60
|
+
expect(response.xml.class).to eq(String)
|
61
|
+
end
|
62
|
+
|
63
|
+
it "returns a Hash from the #body method, include xop data" do
|
64
|
+
expect(response.body.class).to eq(Hash)
|
65
|
+
expect(response.body).to eq({:binary_data => Base64.encode64('BinaryDataGoesHere').chomp})
|
66
|
+
end
|
46
67
|
end
|
47
68
|
|
48
|
-
|
49
|
-
|
50
|
-
response.
|
69
|
+
describe "a multipart response with case sensitive headers" do
|
70
|
+
let(:header) {{ "Content-Type" => 'MuLtIpArT/rElAtEd; boundary="--==_mimepart_4d416ae62fd32_201a8043814c4724"; charset=UTF-8; type="text/xml"' }}
|
71
|
+
let(:path) { File.expand_path('../../../fixtures/response/simple_multipart.txt', __FILE__) }
|
51
72
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
73
|
+
it "does not care about upper or lowercase values for ContentType" do
|
74
|
+
expect(response.body).to eq({:submit_req => true})
|
75
|
+
end
|
76
|
+
end
|
56
77
|
|
57
|
-
|
78
|
+
context "not multipart" do
|
79
|
+
let(:path) { File.expand_path('../../../fixtures/response/not_multipart.txt', __FILE__) }
|
80
|
+
let(:header) { { 'Content-Type' => 'text/html; charset=utf-8'} }
|
81
|
+
|
82
|
+
it "parses soap messages without attachments too" do
|
83
|
+
expect(response.xml.chomp).to eq('<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:wsdl="http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-2" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header><ns1:TransactionID soapenv:actor="" soapenv:mustUnderstand="1" xsi:type="xsd:string" xmlns:ns1="http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-2">2011012713535811111111111</ns1:TransactionID></soapenv:Header><soapenv:Body><SubmitReq xmlns="http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-2"><MM7Version>5.3.0</MM7Version><SenderIdentification><VASPID>messaging</VASPID><VASID>ADM</VASID><SenderAddress><ShortCode>1111</ShortCode></SenderAddress></SenderIdentification><Recipients><To><Number>11111111111</Number></To></Recipients><ServiceCode>1</ServiceCode><MessageClass>Personal</MessageClass><ExpiryDate>2011-01-28T13:53:58Z</ExpiryDate><DeliveryReport>false</DeliveryReport><ReadReply>false</ReadReply><Priority>Normal</Priority><Subject>Test MMS via Savon</Subject><ChargedParty>Sender</ChargedParty><Content href="cid:attachment_1" allowAdaptations="true"/></SubmitReq></soapenv:Body></soapenv:Envelope>')
|
84
|
+
expect(response.parts.size).to eq(0)
|
85
|
+
expect(response.attachments.size).to eq(0)
|
86
|
+
end
|
58
87
|
end
|
59
88
|
|
60
|
-
|
61
|
-
|
62
|
-
response = defaults.merge options
|
63
|
-
globals = {
|
64
|
-
:multipart => true,
|
65
|
-
:convert_response_tags_to => lambda { |tag| tag.snakecase.to_sym}
|
66
|
-
}
|
67
|
-
http = HTTPI::Response.new(response[:code], response[:headers], response[:body])
|
89
|
+
context "soap errors" do
|
90
|
+
let(:path) { File.expand_path('../../../fixtures/response/soap_fault.txt', __FILE__) }
|
68
91
|
|
69
|
-
|
92
|
+
it "handles them correctly" do
|
93
|
+
expect { response }.to raise_error(Savon::SOAPFault, /The service cannot be found/)
|
94
|
+
end
|
70
95
|
end
|
71
96
|
end
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: savon-multipart
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Westin
|
8
8
|
- Daniel Harrington
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2022-01-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: savon
|
@@ -29,16 +29,16 @@ dependencies:
|
|
29
29
|
name: mail
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- -
|
32
|
+
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: 2
|
34
|
+
version: '2'
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- -
|
39
|
+
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: 2
|
41
|
+
version: '2'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: rake
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,6 +53,20 @@ dependencies:
|
|
53
53
|
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '0'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: pry
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
56
70
|
- !ruby/object:Gem::Dependency
|
57
71
|
name: rspec
|
58
72
|
requirement: !ruby/object:Gem::Requirement
|
@@ -89,9 +103,9 @@ executables: []
|
|
89
103
|
extensions: []
|
90
104
|
extra_rdoc_files: []
|
91
105
|
files:
|
106
|
+
- ".github/workflows/ci.yml"
|
92
107
|
- ".gitignore"
|
93
108
|
- ".rspec"
|
94
|
-
- ".travis.yml"
|
95
109
|
- CHANGELOG.md
|
96
110
|
- Gemfile
|
97
111
|
- LICENSE
|
@@ -104,11 +118,13 @@ files:
|
|
104
118
|
- spec/fixtures/response/multipart.txt
|
105
119
|
- spec/fixtures/response/not_multipart.txt
|
106
120
|
- spec/fixtures/response/simple_multipart.txt
|
121
|
+
- spec/fixtures/response/simple_xop.txt
|
122
|
+
- spec/fixtures/response/soap_fault.txt
|
107
123
|
- spec/savon/soap/response_spec.rb
|
108
124
|
homepage: http://savonrb.com
|
109
125
|
licenses: []
|
110
126
|
metadata: {}
|
111
|
-
post_install_message:
|
127
|
+
post_install_message:
|
112
128
|
rdoc_options: []
|
113
129
|
require_paths:
|
114
130
|
- lib
|
@@ -116,16 +132,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
116
132
|
requirements:
|
117
133
|
- - ">="
|
118
134
|
- !ruby/object:Gem::Version
|
119
|
-
version:
|
135
|
+
version: 1.9.2
|
120
136
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
137
|
requirements:
|
122
138
|
- - ">="
|
123
139
|
- !ruby/object:Gem::Version
|
124
140
|
version: '0'
|
125
141
|
requirements: []
|
126
|
-
|
127
|
-
|
128
|
-
signing_key:
|
142
|
+
rubygems_version: 3.2.7
|
143
|
+
signing_key:
|
129
144
|
specification_version: 4
|
130
145
|
summary: Heavy metal Ruby SOAP client with multipart support
|
131
146
|
test_files: []
|