savon-multipart 2.0.1 → 2.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: ccf1ee76c019c3ec5a39ca37d05548d12072b137
4
- data.tar.gz: 5ee7d783d794452602d49b4e5ac53bf5a427da55
2
+ SHA256:
3
+ metadata.gz: 206ff4ab739562cbbf2e15e23d4b7c3a762b08bc26a2fefb286de605603e18ca
4
+ data.tar.gz: e1c187a1fbe40e23be747a620ab8378d1dfec812f80b72ec9ae0964b02ce35bb
5
5
  SHA512:
6
- metadata.gz: e5f7022fe0ee6d39883d308bcaf2004caa2efc204f4919b836811821c31cb0c316777ff702c16aa859fa17051179723af49743abd3976d5f5e6c871d21418cab
7
- data.tar.gz: bffe0513891d54b61aec6d78e001283028719741bc6a7246da2dfeb20035a2144189f117f0ee49f084072c3e68eef64b8bedaccdd0d05f0d855e6b5852be8518
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
- ## 0.9.7 (UPCOMING)
1
+ ## 2.1.2 (2022-01-20)
2
2
 
3
- * Initial version. Adds multipart support (SOAP with Attachments) to Savon v0.9.7.
4
- Please test and provide feedback so we can merge this into Savon proper.
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 (UNRELEASED)
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
- group :development do
5
- gem 'pry'
6
- gem 'pry-debugger'
7
- end
8
-
9
- platform :rbx do
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 [![Build Status](https://secure.travis-ci.org/savonrb/savon-multipart.png)](http://travis-ci.org/savonrb/savon-multipart)
1
+ Savon Multipart [![CI](https://github.com/savonrb/savon-multipart/actions/workflows/ci.yml/badge.svg)](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
- Savon2
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 'savon-multipart', :git => 'https://github.com/tjarratt/savon-multipart.git', :branch => 'savon2'
13
+ $ gem install savon-multipart
18
14
  ```
19
15
 
16
+ Or in your `Gemfile`:
20
17
 
21
- Installation
18
+ ```ruby
19
+ gem 'savon-multipart'
20
+ ```
21
+
22
+ Usage
22
23
  ------------
23
24
 
24
- Savon Multipart is available through [Rubygems](http://rubygems.org/gems/savon-multipart) and can be installed via:
25
+ Just require the gem 'savon-multipart', which automatically requires 'savon' as well:
25
26
 
26
27
  ```
27
- $ gem install savon-multipart
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
- @parts.first.body.to_s
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
@@ -1,7 +1,5 @@
1
1
  module Savon
2
2
  module Multipart
3
-
4
- VERSION = "2.0.1"
5
-
3
+ VERSION = "2.1.2"
6
4
  end
7
5
  end
@@ -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.5.3"
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
- before do
6
- @header = { "Content-Type" => 'multipart/related; boundary="--==_mimepart_4d416ae62fd32_201a8043814c4724"; charset=UTF-8; type="text/xml"' }
7
- path = File.expand_path("../../../fixtures/response/multipart.txt", __FILE__)
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
- it "parses without Exception" do
13
- response = soap_response :headers => @header, :body => @body
14
- response.xml.should == '<?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>'
15
- response.parts.length.should == 2
16
- response.parts[1].parts.length.should == 3
17
- response.parts[1].parts[2].body.should == "This is a test message from Github"
18
- end
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
- it "returns a String from the #xml method" do
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
- it "returns a Hash from the #body method" do
27
- body = File.read(File.expand_path('../../../fixtures/response/simple_multipart.txt', __FILE__))
28
- response = soap_response :headers => @header, :body => body
29
- response.body.class.should == Hash
30
- response.body.should == {:submit_req => true}
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
- it "returns the attachments" do
34
- response = soap_response :headers => @header, :body => @body
35
- response.attachments.size.should == 1
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
- it "parses soap messages without attachments too" do
39
- header = { 'Content-Type' => 'text/html; charset=utf-8'}
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
- response.xml.chomp.should == '<?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>'
44
- response.parts.size.should == 0
45
- response.attachments.size.should == 0
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
- it "only parses the SOAP body once" do
49
- response = soap_response :headers => @header, :body => @body
50
- response.xml
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
- counter = 0
53
- subbed_parse_body = lambda { counter += 1 }
54
- response.class.send(:define_method, :parse_body, subbed_parse_body)
55
- 5.times { response.attachments }
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
- counter.should == 0
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
- def soap_response(options = {})
61
- defaults = { :code => 200, :headers => {}, :body => "" }
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
- Savon::Multipart::Response.new(http, globals, {})
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.0.1
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: 2014-05-13 00:00:00.000000000 Z
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.5.3
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.5.3
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: '0'
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
- rubyforge_project: savon-multipart
127
- rubygems_version: 2.2.2
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: []
data/.travis.yml DELETED
@@ -1,9 +0,0 @@
1
- # https://github.com/travis-ci/travis-ci/wiki/.travis.yml-options
2
- language: "ruby"
3
- script: "bundle exec rake"
4
- rvm:
5
- - 1.9.2
6
- - 1.9.3
7
- - 2.0.0
8
- - jruby-19mode
9
- - rbx