soap-object 0.1

Sign up to get free protection for your applications and to get access to all the features.
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