soap-object 0.1

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.
data/.gitignore ADDED
@@ -0,0 +1,19 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ *.swp
19
+
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format doc
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm --create use 1.9.3-p392@soap-object
data/ChangeLog ADDED
@@ -0,0 +1,2 @@
1
+ === Version 0.1 / 2013-3-4
2
+ Initial release
data/Gemfile ADDED
@@ -0,0 +1,11 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in soap-object.gemspec
4
+
5
+ gem 'rake'
6
+ gem 'rb-fsevent', :require => false if RUBY_PLATFORM =~ /darwin/i
7
+ gem 'growl'
8
+ gem 'guard-rspec'
9
+ gem 'guard-cucumber'
10
+
11
+ gemspec
data/Guardfile ADDED
@@ -0,0 +1,17 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ guard 'rspec', :cli => '--color --format doc' do
5
+ watch(%r{^spec/.+_spec\.rb$})
6
+ watch(%r{^lib/(.+)\.rb$}) { "spec" }
7
+ watch('spec/spec_helper.rb') { "spec" }
8
+ end
9
+
10
+
11
+ guard 'cucumber', :notification => true, :all_after_pass => false, :cli => '--profile focus' do
12
+ watch(%r{^features/.+\.feature$})
13
+ watch(%r{^features/support/.+$}) { 'features' }
14
+ watch(%r{^features/step_definitions/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'features' }
15
+ watch(%r{^lib/.+\.rb$}) { "features" }
16
+ watch(%r{^cucumber.yml$}) { "features" }
17
+ end
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Jeffrey S. Morgan
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # Soap::Object
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'soap-object'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install soap-object
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,21 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ require 'rspec/core/rake_task'
4
+ require 'cucumber'
5
+ require 'cucumber/rake/task'
6
+
7
+ RSpec::Core::RakeTask.new(:spec) do |spec|
8
+ spec.ruby_opts = "-I lib:spec"
9
+ spec.pattern = 'spec/**/*_spec.rb'
10
+ end
11
+ task :spec
12
+
13
+ Cucumber::Rake::Task.new(:features, "Run all features") do |t|
14
+ t.profile = 'focus'
15
+ end
16
+
17
+ desc 'Run all specs and features'
18
+ task :test => %w[spec features]
19
+
20
+ task :default => :test
21
+
data/cucumber.yml ADDED
@@ -0,0 +1,6 @@
1
+ <%
2
+ std_opts = "--no-source --color --format pretty"
3
+ %>
4
+
5
+ default: <%= std_opts %>
6
+ focus: <%= std_opts %> --tags @focus
@@ -0,0 +1,23 @@
1
+ @focus
2
+ Feature: This describes the core functionality of the SoapObject object
3
+
4
+ Scenario: Establishing communications with remote wsdl
5
+ Given I have the url for a remote wsdl
6
+ When I create an instance of the SoapObject class
7
+ Then I should have a connection
8
+
9
+ Scenario: Establishing communications with a local wsdl
10
+ Given I have a wsdl file residing locally
11
+ When I create an instance of the SoapObject class
12
+ Then I should have a connection
13
+
14
+ Scenario: Providing operations when using wsdl
15
+ Given I have the url for a remote wsdl
16
+ When I create an instance of the SoapObject class
17
+ Then I should be able to determine the operations
18
+
19
+ Scenario: Calling a service when using wsdl
20
+ Given I have the url for a remote wsdl
21
+ When I create an instance of the SoapObject class
22
+ Then I should be able to make a call and receive the correct results
23
+
@@ -0,0 +1,39 @@
1
+ class TestServiceWithWsdl
2
+ include SoapObject
3
+
4
+ wsdl 'http://www.webservicex.net/airport.asmx?WSDL'
5
+ end
6
+
7
+ class TestServiceWithLocalWsdl
8
+ include SoapObject
9
+
10
+ wsdl "#{File.dirname(__FILE__)}/../wsdl/airport.asmx.wsdl"
11
+ end
12
+
13
+
14
+
15
+ Given /^I have the url for a remote wsdl$/ do
16
+ @cls = TestServiceWithWsdl
17
+ end
18
+
19
+ Given /^I have a wsdl file residing locally$/ do
20
+ @cls = TestServiceWithLocalWsdl
21
+ end
22
+
23
+ When /^I create an instance of the SoapObject class$/ do
24
+ @so = @cls.new
25
+ end
26
+
27
+ Then /^I should have a connection$/ do
28
+ @so.should be_connected
29
+ end
30
+
31
+ Then /^I should be able to determine the operations$/ do
32
+ @so.operations.should include :get_airport_information_by_airport_code
33
+ end
34
+
35
+ Then /^I should be able to make a call and receive the correct results$/ do
36
+ response = @so.get_airport_information_by_airport_code airport_code: 'SFO'
37
+ doc = Nokogiri::XML(response)
38
+ doc.xpath('//Table/AirportCode').first.content.should == 'SFO'
39
+ end
@@ -0,0 +1,5 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', '..', 'lib'))
2
+
3
+ require 'rspec/expectations'
4
+ require 'soap-object'
5
+ require 'nokogiri'
@@ -0,0 +1,372 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://www.webserviceX.NET" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://www.webserviceX.NET" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
3
+ <wsdl:types>
4
+ <s:schema elementFormDefault="qualified" targetNamespace="http://www.webserviceX.NET">
5
+ <s:element name="getAirportInformationByISOCountryCode">
6
+ <s:complexType>
7
+ <s:sequence>
8
+ <s:element minOccurs="0" maxOccurs="1" name="CountryAbbrviation" type="s:string" />
9
+ </s:sequence>
10
+ </s:complexType>
11
+ </s:element>
12
+ <s:element name="getAirportInformationByISOCountryCodeResponse">
13
+ <s:complexType>
14
+ <s:sequence>
15
+ <s:element minOccurs="0" maxOccurs="1" name="getAirportInformationByISOCountryCodeResult" type="s:string" />
16
+ </s:sequence>
17
+ </s:complexType>
18
+ </s:element>
19
+ <s:element name="getAirportInformationByCityOrAirportName">
20
+ <s:complexType>
21
+ <s:sequence>
22
+ <s:element minOccurs="0" maxOccurs="1" name="cityOrAirportName" type="s:string" />
23
+ </s:sequence>
24
+ </s:complexType>
25
+ </s:element>
26
+ <s:element name="getAirportInformationByCityOrAirportNameResponse">
27
+ <s:complexType>
28
+ <s:sequence>
29
+ <s:element minOccurs="0" maxOccurs="1" name="getAirportInformationByCityOrAirportNameResult" type="s:string" />
30
+ </s:sequence>
31
+ </s:complexType>
32
+ </s:element>
33
+ <s:element name="GetAirportInformationByCountry">
34
+ <s:complexType>
35
+ <s:sequence>
36
+ <s:element minOccurs="0" maxOccurs="1" name="country" type="s:string" />
37
+ </s:sequence>
38
+ </s:complexType>
39
+ </s:element>
40
+ <s:element name="GetAirportInformationByCountryResponse">
41
+ <s:complexType>
42
+ <s:sequence>
43
+ <s:element minOccurs="0" maxOccurs="1" name="GetAirportInformationByCountryResult" type="s:string" />
44
+ </s:sequence>
45
+ </s:complexType>
46
+ </s:element>
47
+ <s:element name="getAirportInformationByAirportCode">
48
+ <s:complexType>
49
+ <s:sequence>
50
+ <s:element minOccurs="0" maxOccurs="1" name="airportCode" type="s:string" />
51
+ </s:sequence>
52
+ </s:complexType>
53
+ </s:element>
54
+ <s:element name="getAirportInformationByAirportCodeResponse">
55
+ <s:complexType>
56
+ <s:sequence>
57
+ <s:element minOccurs="0" maxOccurs="1" name="getAirportInformationByAirportCodeResult" type="s:string" />
58
+ </s:sequence>
59
+ </s:complexType>
60
+ </s:element>
61
+ <s:element name="string" nillable="true" type="s:string" />
62
+ </s:schema>
63
+ </wsdl:types>
64
+ <wsdl:message name="getAirportInformationByISOCountryCodeSoapIn">
65
+ <wsdl:part name="parameters" element="tns:getAirportInformationByISOCountryCode" />
66
+ </wsdl:message>
67
+ <wsdl:message name="getAirportInformationByISOCountryCodeSoapOut">
68
+ <wsdl:part name="parameters" element="tns:getAirportInformationByISOCountryCodeResponse" />
69
+ </wsdl:message>
70
+ <wsdl:message name="getAirportInformationByCityOrAirportNameSoapIn">
71
+ <wsdl:part name="parameters" element="tns:getAirportInformationByCityOrAirportName" />
72
+ </wsdl:message>
73
+ <wsdl:message name="getAirportInformationByCityOrAirportNameSoapOut">
74
+ <wsdl:part name="parameters" element="tns:getAirportInformationByCityOrAirportNameResponse" />
75
+ </wsdl:message>
76
+ <wsdl:message name="GetAirportInformationByCountrySoapIn">
77
+ <wsdl:part name="parameters" element="tns:GetAirportInformationByCountry" />
78
+ </wsdl:message>
79
+ <wsdl:message name="GetAirportInformationByCountrySoapOut">
80
+ <wsdl:part name="parameters" element="tns:GetAirportInformationByCountryResponse" />
81
+ </wsdl:message>
82
+ <wsdl:message name="getAirportInformationByAirportCodeSoapIn">
83
+ <wsdl:part name="parameters" element="tns:getAirportInformationByAirportCode" />
84
+ </wsdl:message>
85
+ <wsdl:message name="getAirportInformationByAirportCodeSoapOut">
86
+ <wsdl:part name="parameters" element="tns:getAirportInformationByAirportCodeResponse" />
87
+ </wsdl:message>
88
+ <wsdl:message name="getAirportInformationByISOCountryCodeHttpGetIn">
89
+ <wsdl:part name="CountryAbbrviation" type="s:string" />
90
+ </wsdl:message>
91
+ <wsdl:message name="getAirportInformationByISOCountryCodeHttpGetOut">
92
+ <wsdl:part name="Body" element="tns:string" />
93
+ </wsdl:message>
94
+ <wsdl:message name="getAirportInformationByCityOrAirportNameHttpGetIn">
95
+ <wsdl:part name="cityOrAirportName" type="s:string" />
96
+ </wsdl:message>
97
+ <wsdl:message name="getAirportInformationByCityOrAirportNameHttpGetOut">
98
+ <wsdl:part name="Body" element="tns:string" />
99
+ </wsdl:message>
100
+ <wsdl:message name="GetAirportInformationByCountryHttpGetIn">
101
+ <wsdl:part name="country" type="s:string" />
102
+ </wsdl:message>
103
+ <wsdl:message name="GetAirportInformationByCountryHttpGetOut">
104
+ <wsdl:part name="Body" element="tns:string" />
105
+ </wsdl:message>
106
+ <wsdl:message name="getAirportInformationByAirportCodeHttpGetIn">
107
+ <wsdl:part name="airportCode" type="s:string" />
108
+ </wsdl:message>
109
+ <wsdl:message name="getAirportInformationByAirportCodeHttpGetOut">
110
+ <wsdl:part name="Body" element="tns:string" />
111
+ </wsdl:message>
112
+ <wsdl:message name="getAirportInformationByISOCountryCodeHttpPostIn">
113
+ <wsdl:part name="CountryAbbrviation" type="s:string" />
114
+ </wsdl:message>
115
+ <wsdl:message name="getAirportInformationByISOCountryCodeHttpPostOut">
116
+ <wsdl:part name="Body" element="tns:string" />
117
+ </wsdl:message>
118
+ <wsdl:message name="getAirportInformationByCityOrAirportNameHttpPostIn">
119
+ <wsdl:part name="cityOrAirportName" type="s:string" />
120
+ </wsdl:message>
121
+ <wsdl:message name="getAirportInformationByCityOrAirportNameHttpPostOut">
122
+ <wsdl:part name="Body" element="tns:string" />
123
+ </wsdl:message>
124
+ <wsdl:message name="GetAirportInformationByCountryHttpPostIn">
125
+ <wsdl:part name="country" type="s:string" />
126
+ </wsdl:message>
127
+ <wsdl:message name="GetAirportInformationByCountryHttpPostOut">
128
+ <wsdl:part name="Body" element="tns:string" />
129
+ </wsdl:message>
130
+ <wsdl:message name="getAirportInformationByAirportCodeHttpPostIn">
131
+ <wsdl:part name="airportCode" type="s:string" />
132
+ </wsdl:message>
133
+ <wsdl:message name="getAirportInformationByAirportCodeHttpPostOut">
134
+ <wsdl:part name="Body" element="tns:string" />
135
+ </wsdl:message>
136
+ <wsdl:portType name="airportSoap">
137
+ <wsdl:operation name="getAirportInformationByISOCountryCode">
138
+ <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Get Airport Code, CityOrAirport Name, Country, Country Abbrv, CountryCode,GMT Offset Runway Length in Feet, Runway Elevation in Feet,Latitude in Degree,Latitude in Minute Latitude in Second,Latitude in N/S, Longitude in Degree, Longitude in Minute, Longitude in Seconds and longitude E/W by ISO country code </wsdl:documentation>
139
+ <wsdl:input message="tns:getAirportInformationByISOCountryCodeSoapIn" />
140
+ <wsdl:output message="tns:getAirportInformationByISOCountryCodeSoapOut" />
141
+ </wsdl:operation>
142
+ <wsdl:operation name="getAirportInformationByCityOrAirportName">
143
+ <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Get Airport Code, CityOrAirport Name, Country, Country Abbrv, CountryCode,GMT Offset Runway Length in Feet, Runway Elevation in Feet,Latitude in Degree,Latitude in Minute Latitude in Second,Latitude in N/S, Longitude in Degree, Longitude in Minute, Longitude in Seconds and longitude E/W by city or airport name </wsdl:documentation>
144
+ <wsdl:input message="tns:getAirportInformationByCityOrAirportNameSoapIn" />
145
+ <wsdl:output message="tns:getAirportInformationByCityOrAirportNameSoapOut" />
146
+ </wsdl:operation>
147
+ <wsdl:operation name="GetAirportInformationByCountry">
148
+ <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Get Airport Code, CityOrAirport Name, Country, Country Abbrv, CountryCode,GMT Offset Runway Length in Feet, Runway Elevation in Feet,Latitude in Degree,Latitude in Minute Latitude in Second,Latitude in N/S, Longitude in Degree, Longitude in Minute, Longitude in Seconds and longitude E/W by country name </wsdl:documentation>
149
+ <wsdl:input message="tns:GetAirportInformationByCountrySoapIn" />
150
+ <wsdl:output message="tns:GetAirportInformationByCountrySoapOut" />
151
+ </wsdl:operation>
152
+ <wsdl:operation name="getAirportInformationByAirportCode">
153
+ <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Get Airport Code, CityOrAirport Name, Country, Country Abbrv, CountryCode,GMT Offset Runway Length in Feet, Runway Elevation in Feet,Latitude in Degree,Latitude in Minute Latitude in Second,Latitude in N/S, Longitude in Degree, Longitude in Minute, Longitude in Seconds and longitude E/W by airport code </wsdl:documentation>
154
+ <wsdl:input message="tns:getAirportInformationByAirportCodeSoapIn" />
155
+ <wsdl:output message="tns:getAirportInformationByAirportCodeSoapOut" />
156
+ </wsdl:operation>
157
+ </wsdl:portType>
158
+ <wsdl:portType name="airportHttpGet">
159
+ <wsdl:operation name="getAirportInformationByISOCountryCode">
160
+ <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Get Airport Code, CityOrAirport Name, Country, Country Abbrv, CountryCode,GMT Offset Runway Length in Feet, Runway Elevation in Feet,Latitude in Degree,Latitude in Minute Latitude in Second,Latitude in N/S, Longitude in Degree, Longitude in Minute, Longitude in Seconds and longitude E/W by ISO country code </wsdl:documentation>
161
+ <wsdl:input message="tns:getAirportInformationByISOCountryCodeHttpGetIn" />
162
+ <wsdl:output message="tns:getAirportInformationByISOCountryCodeHttpGetOut" />
163
+ </wsdl:operation>
164
+ <wsdl:operation name="getAirportInformationByCityOrAirportName">
165
+ <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Get Airport Code, CityOrAirport Name, Country, Country Abbrv, CountryCode,GMT Offset Runway Length in Feet, Runway Elevation in Feet,Latitude in Degree,Latitude in Minute Latitude in Second,Latitude in N/S, Longitude in Degree, Longitude in Minute, Longitude in Seconds and longitude E/W by city or airport name </wsdl:documentation>
166
+ <wsdl:input message="tns:getAirportInformationByCityOrAirportNameHttpGetIn" />
167
+ <wsdl:output message="tns:getAirportInformationByCityOrAirportNameHttpGetOut" />
168
+ </wsdl:operation>
169
+ <wsdl:operation name="GetAirportInformationByCountry">
170
+ <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Get Airport Code, CityOrAirport Name, Country, Country Abbrv, CountryCode,GMT Offset Runway Length in Feet, Runway Elevation in Feet,Latitude in Degree,Latitude in Minute Latitude in Second,Latitude in N/S, Longitude in Degree, Longitude in Minute, Longitude in Seconds and longitude E/W by country name </wsdl:documentation>
171
+ <wsdl:input message="tns:GetAirportInformationByCountryHttpGetIn" />
172
+ <wsdl:output message="tns:GetAirportInformationByCountryHttpGetOut" />
173
+ </wsdl:operation>
174
+ <wsdl:operation name="getAirportInformationByAirportCode">
175
+ <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Get Airport Code, CityOrAirport Name, Country, Country Abbrv, CountryCode,GMT Offset Runway Length in Feet, Runway Elevation in Feet,Latitude in Degree,Latitude in Minute Latitude in Second,Latitude in N/S, Longitude in Degree, Longitude in Minute, Longitude in Seconds and longitude E/W by airport code </wsdl:documentation>
176
+ <wsdl:input message="tns:getAirportInformationByAirportCodeHttpGetIn" />
177
+ <wsdl:output message="tns:getAirportInformationByAirportCodeHttpGetOut" />
178
+ </wsdl:operation>
179
+ </wsdl:portType>
180
+ <wsdl:portType name="airportHttpPost">
181
+ <wsdl:operation name="getAirportInformationByISOCountryCode">
182
+ <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Get Airport Code, CityOrAirport Name, Country, Country Abbrv, CountryCode,GMT Offset Runway Length in Feet, Runway Elevation in Feet,Latitude in Degree,Latitude in Minute Latitude in Second,Latitude in N/S, Longitude in Degree, Longitude in Minute, Longitude in Seconds and longitude E/W by ISO country code </wsdl:documentation>
183
+ <wsdl:input message="tns:getAirportInformationByISOCountryCodeHttpPostIn" />
184
+ <wsdl:output message="tns:getAirportInformationByISOCountryCodeHttpPostOut" />
185
+ </wsdl:operation>
186
+ <wsdl:operation name="getAirportInformationByCityOrAirportName">
187
+ <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Get Airport Code, CityOrAirport Name, Country, Country Abbrv, CountryCode,GMT Offset Runway Length in Feet, Runway Elevation in Feet,Latitude in Degree,Latitude in Minute Latitude in Second,Latitude in N/S, Longitude in Degree, Longitude in Minute, Longitude in Seconds and longitude E/W by city or airport name </wsdl:documentation>
188
+ <wsdl:input message="tns:getAirportInformationByCityOrAirportNameHttpPostIn" />
189
+ <wsdl:output message="tns:getAirportInformationByCityOrAirportNameHttpPostOut" />
190
+ </wsdl:operation>
191
+ <wsdl:operation name="GetAirportInformationByCountry">
192
+ <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Get Airport Code, CityOrAirport Name, Country, Country Abbrv, CountryCode,GMT Offset Runway Length in Feet, Runway Elevation in Feet,Latitude in Degree,Latitude in Minute Latitude in Second,Latitude in N/S, Longitude in Degree, Longitude in Minute, Longitude in Seconds and longitude E/W by country name </wsdl:documentation>
193
+ <wsdl:input message="tns:GetAirportInformationByCountryHttpPostIn" />
194
+ <wsdl:output message="tns:GetAirportInformationByCountryHttpPostOut" />
195
+ </wsdl:operation>
196
+ <wsdl:operation name="getAirportInformationByAirportCode">
197
+ <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Get Airport Code, CityOrAirport Name, Country, Country Abbrv, CountryCode,GMT Offset Runway Length in Feet, Runway Elevation in Feet,Latitude in Degree,Latitude in Minute Latitude in Second,Latitude in N/S, Longitude in Degree, Longitude in Minute, Longitude in Seconds and longitude E/W by airport code </wsdl:documentation>
198
+ <wsdl:input message="tns:getAirportInformationByAirportCodeHttpPostIn" />
199
+ <wsdl:output message="tns:getAirportInformationByAirportCodeHttpPostOut" />
200
+ </wsdl:operation>
201
+ </wsdl:portType>
202
+ <wsdl:binding name="airportSoap" type="tns:airportSoap">
203
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
204
+ <wsdl:operation name="getAirportInformationByISOCountryCode">
205
+ <soap:operation soapAction="http://www.webserviceX.NET/getAirportInformationByISOCountryCode" style="document" />
206
+ <wsdl:input>
207
+ <soap:body use="literal" />
208
+ </wsdl:input>
209
+ <wsdl:output>
210
+ <soap:body use="literal" />
211
+ </wsdl:output>
212
+ </wsdl:operation>
213
+ <wsdl:operation name="getAirportInformationByCityOrAirportName">
214
+ <soap:operation soapAction="http://www.webserviceX.NET/getAirportInformationByCityOrAirportName" style="document" />
215
+ <wsdl:input>
216
+ <soap:body use="literal" />
217
+ </wsdl:input>
218
+ <wsdl:output>
219
+ <soap:body use="literal" />
220
+ </wsdl:output>
221
+ </wsdl:operation>
222
+ <wsdl:operation name="GetAirportInformationByCountry">
223
+ <soap:operation soapAction="http://www.webserviceX.NET/GetAirportInformationByCountry" style="document" />
224
+ <wsdl:input>
225
+ <soap:body use="literal" />
226
+ </wsdl:input>
227
+ <wsdl:output>
228
+ <soap:body use="literal" />
229
+ </wsdl:output>
230
+ </wsdl:operation>
231
+ <wsdl:operation name="getAirportInformationByAirportCode">
232
+ <soap:operation soapAction="http://www.webserviceX.NET/getAirportInformationByAirportCode" style="document" />
233
+ <wsdl:input>
234
+ <soap:body use="literal" />
235
+ </wsdl:input>
236
+ <wsdl:output>
237
+ <soap:body use="literal" />
238
+ </wsdl:output>
239
+ </wsdl:operation>
240
+ </wsdl:binding>
241
+ <wsdl:binding name="airportSoap12" type="tns:airportSoap">
242
+ <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
243
+ <wsdl:operation name="getAirportInformationByISOCountryCode">
244
+ <soap12:operation soapAction="http://www.webserviceX.NET/getAirportInformationByISOCountryCode" style="document" />
245
+ <wsdl:input>
246
+ <soap12:body use="literal" />
247
+ </wsdl:input>
248
+ <wsdl:output>
249
+ <soap12:body use="literal" />
250
+ </wsdl:output>
251
+ </wsdl:operation>
252
+ <wsdl:operation name="getAirportInformationByCityOrAirportName">
253
+ <soap12:operation soapAction="http://www.webserviceX.NET/getAirportInformationByCityOrAirportName" style="document" />
254
+ <wsdl:input>
255
+ <soap12:body use="literal" />
256
+ </wsdl:input>
257
+ <wsdl:output>
258
+ <soap12:body use="literal" />
259
+ </wsdl:output>
260
+ </wsdl:operation>
261
+ <wsdl:operation name="GetAirportInformationByCountry">
262
+ <soap12:operation soapAction="http://www.webserviceX.NET/GetAirportInformationByCountry" style="document" />
263
+ <wsdl:input>
264
+ <soap12:body use="literal" />
265
+ </wsdl:input>
266
+ <wsdl:output>
267
+ <soap12:body use="literal" />
268
+ </wsdl:output>
269
+ </wsdl:operation>
270
+ <wsdl:operation name="getAirportInformationByAirportCode">
271
+ <soap12:operation soapAction="http://www.webserviceX.NET/getAirportInformationByAirportCode" style="document" />
272
+ <wsdl:input>
273
+ <soap12:body use="literal" />
274
+ </wsdl:input>
275
+ <wsdl:output>
276
+ <soap12:body use="literal" />
277
+ </wsdl:output>
278
+ </wsdl:operation>
279
+ </wsdl:binding>
280
+ <wsdl:binding name="airportHttpGet" type="tns:airportHttpGet">
281
+ <http:binding verb="GET" />
282
+ <wsdl:operation name="getAirportInformationByISOCountryCode">
283
+ <http:operation location="/getAirportInformationByISOCountryCode" />
284
+ <wsdl:input>
285
+ <http:urlEncoded />
286
+ </wsdl:input>
287
+ <wsdl:output>
288
+ <mime:mimeXml part="Body" />
289
+ </wsdl:output>
290
+ </wsdl:operation>
291
+ <wsdl:operation name="getAirportInformationByCityOrAirportName">
292
+ <http:operation location="/getAirportInformationByCityOrAirportName" />
293
+ <wsdl:input>
294
+ <http:urlEncoded />
295
+ </wsdl:input>
296
+ <wsdl:output>
297
+ <mime:mimeXml part="Body" />
298
+ </wsdl:output>
299
+ </wsdl:operation>
300
+ <wsdl:operation name="GetAirportInformationByCountry">
301
+ <http:operation location="/GetAirportInformationByCountry" />
302
+ <wsdl:input>
303
+ <http:urlEncoded />
304
+ </wsdl:input>
305
+ <wsdl:output>
306
+ <mime:mimeXml part="Body" />
307
+ </wsdl:output>
308
+ </wsdl:operation>
309
+ <wsdl:operation name="getAirportInformationByAirportCode">
310
+ <http:operation location="/getAirportInformationByAirportCode" />
311
+ <wsdl:input>
312
+ <http:urlEncoded />
313
+ </wsdl:input>
314
+ <wsdl:output>
315
+ <mime:mimeXml part="Body" />
316
+ </wsdl:output>
317
+ </wsdl:operation>
318
+ </wsdl:binding>
319
+ <wsdl:binding name="airportHttpPost" type="tns:airportHttpPost">
320
+ <http:binding verb="POST" />
321
+ <wsdl:operation name="getAirportInformationByISOCountryCode">
322
+ <http:operation location="/getAirportInformationByISOCountryCode" />
323
+ <wsdl:input>
324
+ <mime:content type="application/x-www-form-urlencoded" />
325
+ </wsdl:input>
326
+ <wsdl:output>
327
+ <mime:mimeXml part="Body" />
328
+ </wsdl:output>
329
+ </wsdl:operation>
330
+ <wsdl:operation name="getAirportInformationByCityOrAirportName">
331
+ <http:operation location="/getAirportInformationByCityOrAirportName" />
332
+ <wsdl:input>
333
+ <mime:content type="application/x-www-form-urlencoded" />
334
+ </wsdl:input>
335
+ <wsdl:output>
336
+ <mime:mimeXml part="Body" />
337
+ </wsdl:output>
338
+ </wsdl:operation>
339
+ <wsdl:operation name="GetAirportInformationByCountry">
340
+ <http:operation location="/GetAirportInformationByCountry" />
341
+ <wsdl:input>
342
+ <mime:content type="application/x-www-form-urlencoded" />
343
+ </wsdl:input>
344
+ <wsdl:output>
345
+ <mime:mimeXml part="Body" />
346
+ </wsdl:output>
347
+ </wsdl:operation>
348
+ <wsdl:operation name="getAirportInformationByAirportCode">
349
+ <http:operation location="/getAirportInformationByAirportCode" />
350
+ <wsdl:input>
351
+ <mime:content type="application/x-www-form-urlencoded" />
352
+ </wsdl:input>
353
+ <wsdl:output>
354
+ <mime:mimeXml part="Body" />
355
+ </wsdl:output>
356
+ </wsdl:operation>
357
+ </wsdl:binding>
358
+ <wsdl:service name="airport">
359
+ <wsdl:port name="airportSoap" binding="tns:airportSoap">
360
+ <soap:address location="http://www.webservicex.net/airport.asmx" />
361
+ </wsdl:port>
362
+ <wsdl:port name="airportSoap12" binding="tns:airportSoap12">
363
+ <soap12:address location="http://www.webservicex.net/airport.asmx" />
364
+ </wsdl:port>
365
+ <wsdl:port name="airportHttpGet" binding="tns:airportHttpGet">
366
+ <http:address location="http://www.webservicex.net/airport.asmx" />
367
+ </wsdl:port>
368
+ <wsdl:port name="airportHttpPost" binding="tns:airportHttpPost">
369
+ <http:address location="http://www.webservicex.net/airport.asmx" />
370
+ </wsdl:port>
371
+ </wsdl:service>
372
+ </wsdl:definitions>
@@ -0,0 +1,55 @@
1
+ require 'savon'
2
+ require 'soap-object/version'
3
+ require 'soap-object/class_methods'
4
+
5
+ #
6
+ # module to make it simpler to tests SOAP web services. You define
7
+ # the behavior by calling class methods to set the configuration.
8
+ #
9
+ module SoapObject
10
+ attr_reader :wsdl
11
+
12
+ def initialize
13
+ @client = Savon.client(client_properties)
14
+ end
15
+
16
+ def self.included(cls)
17
+ cls.extend SoapObject::ClassMethods
18
+ end
19
+
20
+ def connected?
21
+ not @client.nil?
22
+ end
23
+
24
+ def operations
25
+ @client.operations
26
+ end
27
+
28
+ def method_missing(*args)
29
+ method = args.shift
30
+ @response = @client.call(method, {message: args.first})
31
+ body_for(method)
32
+ end
33
+
34
+ def client_properties
35
+ properties = {}
36
+ [:with_wsdl,
37
+ :with_proxy,
38
+ :with_open_timeout,
39
+ :with_read_timeout,
40
+ :no_log].each do |sym|
41
+ properties = properties.merge(self.send sym) if self.respond_to? sym
42
+ end
43
+ properties
44
+ end
45
+
46
+ def no_log
47
+ {log: false}
48
+ end
49
+
50
+ private
51
+
52
+ def body_for(method)
53
+ @response.body["#{method.to_s}_response".to_sym]["#{method.to_s}_result".to_sym]
54
+ end
55
+ end
@@ -0,0 +1,33 @@
1
+
2
+ module SoapObject
3
+ module ClassMethods
4
+
5
+ def wsdl(url)
6
+ define_method(:with_wsdl) do
7
+ @wsdl ||= url
8
+ {wsdl: @wsdl}
9
+ end
10
+ end
11
+
12
+ def proxy(url)
13
+ define_method(:with_proxy) do
14
+ @proxy ||= url
15
+ {proxy: @proxy}
16
+ end
17
+ end
18
+
19
+ def open_timeout(timeout)
20
+ define_method(:with_open_timeout) do
21
+ @open_timeout ||= timeout
22
+ {open_timeout: @open_timeout}
23
+ end
24
+ end
25
+
26
+ def read_timeout(timeout)
27
+ define_method(:with_read_timeout) do
28
+ @read_timeout ||= timeout
29
+ {read_timeout: @read_timeout}
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,5 @@
1
+ module Soap
2
+ module Object
3
+ VERSION = "0.1"
4
+ end
5
+ end
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'soap-object/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "soap-object"
8
+ gem.version = Soap::Object::VERSION
9
+ gem.authors = ["Jeffrey S. Morgan"]
10
+ gem.email = ["jeff.morgan@leandog.com"]
11
+ gem.description = %q{Wrapper around SOAP service calls to make it easy to test}
12
+ gem.summary = %q{Wrapper around SOAP service calls to make it easy to test}
13
+ gem.homepage = "http://github.com/cheezy/soap-object"
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+
20
+ gem.add_dependency 'savon', '>= 2.1.0'
21
+
22
+ gem.add_development_dependency 'rspec', '>= 2.12.0'
23
+ gem.add_development_dependency 'cucumber', '>= 1.2.0'
24
+ end
@@ -0,0 +1,56 @@
1
+ require 'spec_helper'
2
+
3
+ class TestServiceWithWsdl
4
+ include SoapObject
5
+
6
+ wsdl 'http://blah.com'
7
+ proxy 'http://proxy.com:8080'
8
+ open_timeout 10
9
+ read_timeout 20
10
+ end
11
+
12
+
13
+ describe SoapObject do
14
+ let(:client) { double('client') }
15
+ let(:subject) { TestServiceWithWsdl.new }
16
+
17
+
18
+ context "when creating new instances" do
19
+ before do
20
+ Savon.should_receive(:client).and_return(client)
21
+ end
22
+
23
+ it "should initialize the client using the wsdl" do
24
+ subject.client_properties[:wsdl].should == 'http://blah.com'
25
+ end
26
+
27
+ it "should know when it is connected to service" do
28
+ subject.should be_connected
29
+ end
30
+
31
+ it "should allow one to setup a proxy" do
32
+ subject.client_properties[:proxy].should == 'http://proxy.com:8080'
33
+ end
34
+
35
+ it "should allow one to set an open timeout" do
36
+ subject.client_properties[:open_timeout].should == 10
37
+ end
38
+
39
+ it "should allow one to set a read timeout" do
40
+ subject.client_properties[:read_timeout].should == 20
41
+ end
42
+ end
43
+
44
+ context "when calling methods on the service" do
45
+ before do
46
+ Savon.should_receive(:client).and_return(client)
47
+ end
48
+
49
+ it "should make a valid request" do
50
+ client.should_receive(:call).with(:fake_call, message: {data_key: 'some_value'})
51
+ @so = TestServiceWithWsdl.new
52
+ @so.stub(:body_for)
53
+ @so.fake_call data_key: 'some_value'
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,6 @@
1
+ # encoding: utf-8
2
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
+
4
+ require 'rspec'
5
+ require 'soap-object'
6
+
metadata ADDED
@@ -0,0 +1,125 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: soap-object
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Jeffrey S. Morgan
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-03-04 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: savon
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 2.1.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 2.1.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: rspec
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: 2.12.0
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 2.12.0
46
+ - !ruby/object:Gem::Dependency
47
+ name: cucumber
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: 1.2.0
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 1.2.0
62
+ description: Wrapper around SOAP service calls to make it easy to test
63
+ email:
64
+ - jeff.morgan@leandog.com
65
+ executables: []
66
+ extensions: []
67
+ extra_rdoc_files: []
68
+ files:
69
+ - .gitignore
70
+ - .rspec
71
+ - .rvmrc
72
+ - ChangeLog
73
+ - Gemfile
74
+ - Guardfile
75
+ - LICENSE.txt
76
+ - README.md
77
+ - Rakefile
78
+ - cucumber.yml
79
+ - features/basic_functionality.feature
80
+ - features/step_definitions/basic_functionality_steps.rb
81
+ - features/support/env.rb
82
+ - features/wsdl/airport.asmx.wsdl.xml
83
+ - lib/soap-object.rb
84
+ - lib/soap-object/class_methods.rb
85
+ - lib/soap-object/version.rb
86
+ - soap-object.gemspec
87
+ - spec/lib/soap_object_spec.rb
88
+ - spec/spec_helper.rb
89
+ homepage: http://github.com/cheezy/soap-object
90
+ licenses: []
91
+ post_install_message:
92
+ rdoc_options: []
93
+ require_paths:
94
+ - lib
95
+ required_ruby_version: !ruby/object:Gem::Requirement
96
+ none: false
97
+ requirements:
98
+ - - ! '>='
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ segments:
102
+ - 0
103
+ hash: -280735046766684970
104
+ required_rubygems_version: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ segments:
111
+ - 0
112
+ hash: -280735046766684970
113
+ requirements: []
114
+ rubyforge_project:
115
+ rubygems_version: 1.8.25
116
+ signing_key:
117
+ specification_version: 3
118
+ summary: Wrapper around SOAP service calls to make it easy to test
119
+ test_files:
120
+ - features/basic_functionality.feature
121
+ - features/step_definitions/basic_functionality_steps.rb
122
+ - features/support/env.rb
123
+ - features/wsdl/airport.asmx.wsdl.xml
124
+ - spec/lib/soap_object_spec.rb
125
+ - spec/spec_helper.rb