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 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