wsdl-reader 0.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 +4 -0
- data/.idea/.name +1 -0
- data/.idea/.rakeTasks +7 -0
- data/.idea/encodings.xml +5 -0
- data/.idea/misc.xml +350 -0
- data/.idea/modules.xml +9 -0
- data/.idea/projectCodeStyle.xml +123 -0
- data/.idea/vcs.xml +7 -0
- data/.idea/workspace.xml +683 -0
- data/.idea/wsdl-reader.iml +25 -0
- data/.rspec +2 -0
- data/Gemfile +4 -0
- data/Guardfile +9 -0
- data/Rakefile +1 -0
- data/lib/wsdl-reader.rb +15 -0
- data/lib/wsdl-reader/binding.rb +148 -0
- data/lib/wsdl-reader/core_ext.rb +28 -0
- data/lib/wsdl-reader/error.rb +29 -0
- data/lib/wsdl-reader/message.rb +50 -0
- data/lib/wsdl-reader/parser.rb +105 -0
- data/lib/wsdl-reader/port_type.rb +106 -0
- data/lib/wsdl-reader/request.rb +213 -0
- data/lib/wsdl-reader/response.rb +72 -0
- data/lib/wsdl-reader/service.rb +56 -0
- data/lib/wsdl-reader/version.rb +5 -0
- data/lib/wsdl-reader/wsdl.rb +48 -0
- data/lib/wsdl-reader/xsd.rb +98 -0
- data/lib/wsdl-reader/xsd/complextype.rb +136 -0
- data/lib/wsdl-reader/xsd/convert.rb +142 -0
- data/lib/wsdl-reader/xsd/element.rb +168 -0
- data/lib/wsdl-reader/xsd/enumeration.rb +6 -0
- data/lib/wsdl-reader/xsd/restriction.rb +76 -0
- data/lib/wsdl-reader/xsd/sequence.rb +117 -0
- data/lib/wsdl-reader/xsd/simpletype.rb +83 -0
- data/spec/binding_spec.rb +67 -0
- data/spec/fixtures/OneFileUserService.wsdl +114 -0
- data/spec/fixtures/UserService.wsdl +63 -0
- data/spec/fixtures/UserService.xsd +56 -0
- data/spec/message_spec.rb +22 -0
- data/spec/parser_spec.rb +56 -0
- data/spec/port_type_spec.rb +32 -0
- data/spec/request_spec.rb +9 -0
- data/spec/spec_helper.rb +24 -0
- data/wsdl-reader.gemspec +27 -0
- metadata +122 -0
@@ -0,0 +1,63 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
|
3
|
+
xmlns:tns="http://example.com/UserService/"
|
4
|
+
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
5
|
+
name="UserService" targetNamespace="http://example.com/UserService/">
|
6
|
+
<types>
|
7
|
+
<xs:schema>
|
8
|
+
<xs:import namespace="http://example.com/UserService/type/"
|
9
|
+
schemaLocation="UserService.xsd"/>
|
10
|
+
</xs:schema>
|
11
|
+
</types>
|
12
|
+
|
13
|
+
<message name="getFirstName">
|
14
|
+
<part name="parameters" element="tns:GetFirstName"/>
|
15
|
+
</message>
|
16
|
+
<message name="getLastName">
|
17
|
+
<part name="parameters" element="tns:GetLastName"/>
|
18
|
+
</message>
|
19
|
+
|
20
|
+
<message name="UserNameResponse">
|
21
|
+
<part name="parameters" element="xs:string"/>
|
22
|
+
</message>
|
23
|
+
|
24
|
+
<portType name="UserService">
|
25
|
+
<operation name="getFirstName">
|
26
|
+
<input message="tns:getFirstName"/>
|
27
|
+
<output message="tns:UserNameResponse"/>
|
28
|
+
</operation>
|
29
|
+
<operation name="getLastName">
|
30
|
+
<input message="tns:getLastName"/>
|
31
|
+
<output message="tns:UserNameResponse"/>
|
32
|
+
</operation>
|
33
|
+
</portType>
|
34
|
+
|
35
|
+
<binding name="UserServicePortBinding" type="tns:UserService">
|
36
|
+
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
|
37
|
+
<operation name="getFirstName">
|
38
|
+
<soap:operation soapAction=""/>
|
39
|
+
<input>
|
40
|
+
<soap:body use="literal"/>
|
41
|
+
</input>
|
42
|
+
<output>
|
43
|
+
<soap:body use="literal"/>
|
44
|
+
</output>
|
45
|
+
</operation>
|
46
|
+
<operation name="getLastName">
|
47
|
+
<soap:operation soapAction=""/>
|
48
|
+
<input>
|
49
|
+
<soap:body use="literal"/>
|
50
|
+
</input>
|
51
|
+
<output>
|
52
|
+
<soap:body use="literal"/>
|
53
|
+
</output>
|
54
|
+
</operation>
|
55
|
+
</binding>
|
56
|
+
|
57
|
+
<service name="UserService">
|
58
|
+
<port name="UserServicePort" binding="tns:UserServicePortBinding">
|
59
|
+
<soap:address location="REPLACE_WITH_ACTUAL_URL"/>
|
60
|
+
</port>
|
61
|
+
</service>
|
62
|
+
|
63
|
+
</definitions>
|
@@ -0,0 +1,56 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<xs:schema xmlns:tns="http://example.com/UserService/type/" xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
3
|
+
targetNamespace="http://example.com/UserService/type/" version="1.0">
|
4
|
+
|
5
|
+
<xs:element name="getFirstName" type="tns:GetFirstName"/>
|
6
|
+
<xs:element name="getLastName" type="tns:GetLastName"/>
|
7
|
+
|
8
|
+
<xs:complexType name="GetFirstName">
|
9
|
+
<xs:annotation>
|
10
|
+
<xs:documentation>Foo Bar</xs:documentation>
|
11
|
+
</xs:annotation>
|
12
|
+
<xs:sequence>
|
13
|
+
<xs:element name="userIdentifier" type="xs:string" minOccurs="0"/>
|
14
|
+
<xs:element name="filter" minOccurs="0">
|
15
|
+
<xs:complexType>
|
16
|
+
<xs:sequence>
|
17
|
+
<xs:element ref="tns:age"/>
|
18
|
+
<xs:element ref="tns:gender"/>
|
19
|
+
</xs:sequence>
|
20
|
+
</xs:complexType>
|
21
|
+
</xs:element>
|
22
|
+
</xs:sequence>
|
23
|
+
<xs:attribute name="id" type="xs:string"/>
|
24
|
+
</xs:complexType>
|
25
|
+
|
26
|
+
<xs:complexType name="GetLastName">
|
27
|
+
<xs:annotation>
|
28
|
+
<xs:documentation>Foo Bar</xs:documentation>
|
29
|
+
</xs:annotation>
|
30
|
+
<xs:complexContent>
|
31
|
+
<xs:restriction base="tns:GetFirstName">
|
32
|
+
<xs:sequence>
|
33
|
+
<xs:element name="userIdentifier" type="xs:string" minOccurs="0"/>
|
34
|
+
</xs:sequence>
|
35
|
+
</xs:restriction>
|
36
|
+
</xs:complexContent>
|
37
|
+
</xs:complexType>
|
38
|
+
|
39
|
+
<xs:element name="gender">
|
40
|
+
<xs:simpleType>
|
41
|
+
<xs:restriction base="xs:string">
|
42
|
+
<xs:enumeration value="male"/>
|
43
|
+
<xs:enumeration value="female"/>
|
44
|
+
</xs:restriction>
|
45
|
+
</xs:simpleType>
|
46
|
+
</xs:element>
|
47
|
+
|
48
|
+
<xs:element name="age">
|
49
|
+
<xs:simpleType>
|
50
|
+
<xs:restriction base="xs:integer">
|
51
|
+
<xs:minInclusive value="0"/>
|
52
|
+
<xs:maxInclusive value="100"/>
|
53
|
+
</xs:restriction>
|
54
|
+
</xs:simpleType>
|
55
|
+
</xs:element>
|
56
|
+
</xs:schema>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "WSDL Messages" do
|
4
|
+
|
5
|
+
context "WSDL::Reader::Messages" do
|
6
|
+
it "child of Hash" do
|
7
|
+
WSDL::Reader::Messages.superclass.should be Hash
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
context "WSDL::Reader::Message" do
|
12
|
+
subject do
|
13
|
+
parser = WSDL::Reader::Parser.new('spec/fixtures/UserService.wsdl')
|
14
|
+
element = parser.document.root.children.find { |e| e.class == REXML::Element && e.name == 'message' }
|
15
|
+
WSDL::Reader::Message.new(element)
|
16
|
+
end
|
17
|
+
|
18
|
+
its(:parts) { should eq "parameters" => { name: "parameters", element: "tns:GetFirstName", mode: :element } }
|
19
|
+
its(:name) { should eq "getFirstName" }
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
data/spec/parser_spec.rb
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "WSDL Parser" do
|
4
|
+
|
5
|
+
it "parsing fake uri" do
|
6
|
+
expect { WSDL::Reader::Parser.new('spec/fixtures/Fake.wsdl') }.to raise_error WSDL::Reader::FileOpenError
|
7
|
+
end
|
8
|
+
|
9
|
+
context "parsing 'spec/fixtures/UserService.wsdl'" do
|
10
|
+
subject { WSDL::Reader::Parser.new('spec/fixtures/UserService.wsdl') }
|
11
|
+
|
12
|
+
context "attributes types" do
|
13
|
+
it { should be_a WSDL::Reader::Parser }
|
14
|
+
|
15
|
+
its(:document) { should be_a REXML::Document }
|
16
|
+
|
17
|
+
its(:prefixes) { should be_a Hash }
|
18
|
+
|
19
|
+
its(:target_namespace) { should be_a String }
|
20
|
+
|
21
|
+
its(:types) { should be_a SOAP::XSD }
|
22
|
+
|
23
|
+
its(:messages) { should be_a WSDL::Reader::Messages }
|
24
|
+
|
25
|
+
its(:port_types) { should be_a WSDL::Reader::PortTypes }
|
26
|
+
|
27
|
+
its(:bindings) { should be_a WSDL::Reader::Bindings }
|
28
|
+
|
29
|
+
its(:services) { should be_a SOAP::WSDL::Services }
|
30
|
+
end
|
31
|
+
|
32
|
+
context "attributes values" do
|
33
|
+
#its(:document) { clean_xml(subject.document.to_s).should eql clean_xml(File.read('spec/fixtures/UserService.wsdl')) }
|
34
|
+
|
35
|
+
its(:prefixes) do
|
36
|
+
should eq "soap" => "http://schemas.xmlsoap.org/wsdl/soap/",
|
37
|
+
"tns" => "http://example.com/UserService/",
|
38
|
+
"xs" => "http://www.w3.org/2001/XMLSchema",
|
39
|
+
"__default__" => "http://schemas.xmlsoap.org/wsdl/"
|
40
|
+
end
|
41
|
+
|
42
|
+
its(:target_namespace) { should eq "http://example.com/UserService/" }
|
43
|
+
|
44
|
+
its(:types) { should eq SOAP::XSD.new }
|
45
|
+
|
46
|
+
its('messages.keys') { should eq %w{getFirstName getLastName UserNameResponse} }
|
47
|
+
|
48
|
+
its('port_types.keys') { should eq %w{UserService} }
|
49
|
+
|
50
|
+
its('bindings.keys') { should eq %w{UserServicePortBinding} }
|
51
|
+
|
52
|
+
its('services.keys') { should eq %w{UserService} }
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "WSDL PortType" do
|
4
|
+
|
5
|
+
def user_service_port_type
|
6
|
+
{"getFirstName" => { :name => "getFirstName",
|
7
|
+
:input => { :message => "tns:getFirstName" },
|
8
|
+
:output => { :message => "tns:UserNameResponse" } },
|
9
|
+
|
10
|
+
"getLastName" => { :name => "getLastName",
|
11
|
+
:input => { :message => "tns:getLastName" },
|
12
|
+
:output => { :message => "tns:UserNameResponse" } }
|
13
|
+
}
|
14
|
+
end
|
15
|
+
|
16
|
+
context "WSDL::Reader::PortTypes" do
|
17
|
+
it "child of Hash" do
|
18
|
+
WSDL::Reader::PortTypes.superclass.should be Hash
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context "WSDL::Reader::PortType" do
|
23
|
+
subject do
|
24
|
+
parser = WSDL::Reader::Parser.new('spec/fixtures/UserService.wsdl')
|
25
|
+
element = parser.document.root.children.find { |e| e.class == REXML::Element && e.name == 'portType' }
|
26
|
+
WSDL::Reader::PortType.new(element)
|
27
|
+
end
|
28
|
+
|
29
|
+
its(:operations) { should eq user_service_port_type }
|
30
|
+
its(:name) { should eq "UserService" }
|
31
|
+
end
|
32
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# This file was generated by the `rspec --init` command. Conventionally, all
|
2
|
+
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
3
|
+
# Require this file using `require "spec_helper.rb"` to ensure that it is only
|
4
|
+
# loaded once.
|
5
|
+
#
|
6
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
7
|
+
|
8
|
+
CURRENT_DIR=File.dirname(__FILE__)
|
9
|
+
$: << File.expand_path("../lib")
|
10
|
+
|
11
|
+
require "wsdl-reader"
|
12
|
+
|
13
|
+
module CleanXml
|
14
|
+
def clean_xml(xml)
|
15
|
+
xml.gsub(/\n/,"").gsub(/\r/,"").gsub(/'/,'"')
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
RSpec.configure do |config|
|
20
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
21
|
+
config.run_all_when_everything_filtered = true
|
22
|
+
config.filter_run :focus
|
23
|
+
config.include CleanXml
|
24
|
+
end
|
data/wsdl-reader.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "wsdl-reader/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "wsdl-reader"
|
7
|
+
s.version = Wsdl::Reader::VERSION
|
8
|
+
s.authors = ["Anton"]
|
9
|
+
s.email = ["a.sozontov@gmail.com"]
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = %q{WSDL for ruby}
|
12
|
+
s.description = %q{Read WSDL file and parse messages, bindings, portTypes and services}
|
13
|
+
|
14
|
+
s.rubyforge_project = "wsdl-reader"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
# specify any dependencies here; for example:
|
22
|
+
s.add_development_dependency "rspec"
|
23
|
+
s.add_development_dependency "guard-rspec"
|
24
|
+
|
25
|
+
s.add_runtime_dependency "activesupport"
|
26
|
+
#s.add_runtime_dependency "rest-client"
|
27
|
+
end
|
metadata
ADDED
@@ -0,0 +1,122 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: wsdl-reader
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Anton
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-04-16 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rspec
|
16
|
+
requirement: &22762300 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *22762300
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: guard-rspec
|
27
|
+
requirement: &22794860 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *22794860
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: activesupport
|
38
|
+
requirement: &22793880 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *22793880
|
47
|
+
description: Read WSDL file and parse messages, bindings, portTypes and services
|
48
|
+
email:
|
49
|
+
- a.sozontov@gmail.com
|
50
|
+
executables: []
|
51
|
+
extensions: []
|
52
|
+
extra_rdoc_files: []
|
53
|
+
files:
|
54
|
+
- .gitignore
|
55
|
+
- .idea/.name
|
56
|
+
- .idea/.rakeTasks
|
57
|
+
- .idea/encodings.xml
|
58
|
+
- .idea/misc.xml
|
59
|
+
- .idea/modules.xml
|
60
|
+
- .idea/projectCodeStyle.xml
|
61
|
+
- .idea/vcs.xml
|
62
|
+
- .idea/workspace.xml
|
63
|
+
- .idea/wsdl-reader.iml
|
64
|
+
- .rspec
|
65
|
+
- Gemfile
|
66
|
+
- Guardfile
|
67
|
+
- Rakefile
|
68
|
+
- lib/wsdl-reader.rb
|
69
|
+
- lib/wsdl-reader/binding.rb
|
70
|
+
- lib/wsdl-reader/core_ext.rb
|
71
|
+
- lib/wsdl-reader/error.rb
|
72
|
+
- lib/wsdl-reader/message.rb
|
73
|
+
- lib/wsdl-reader/parser.rb
|
74
|
+
- lib/wsdl-reader/port_type.rb
|
75
|
+
- lib/wsdl-reader/request.rb
|
76
|
+
- lib/wsdl-reader/response.rb
|
77
|
+
- lib/wsdl-reader/service.rb
|
78
|
+
- lib/wsdl-reader/version.rb
|
79
|
+
- lib/wsdl-reader/wsdl.rb
|
80
|
+
- lib/wsdl-reader/xsd.rb
|
81
|
+
- lib/wsdl-reader/xsd/complextype.rb
|
82
|
+
- lib/wsdl-reader/xsd/convert.rb
|
83
|
+
- lib/wsdl-reader/xsd/element.rb
|
84
|
+
- lib/wsdl-reader/xsd/enumeration.rb
|
85
|
+
- lib/wsdl-reader/xsd/restriction.rb
|
86
|
+
- lib/wsdl-reader/xsd/sequence.rb
|
87
|
+
- lib/wsdl-reader/xsd/simpletype.rb
|
88
|
+
- spec/binding_spec.rb
|
89
|
+
- spec/fixtures/OneFileUserService.wsdl
|
90
|
+
- spec/fixtures/UserService.wsdl
|
91
|
+
- spec/fixtures/UserService.xsd
|
92
|
+
- spec/message_spec.rb
|
93
|
+
- spec/parser_spec.rb
|
94
|
+
- spec/port_type_spec.rb
|
95
|
+
- spec/request_spec.rb
|
96
|
+
- spec/spec_helper.rb
|
97
|
+
- wsdl-reader.gemspec
|
98
|
+
homepage: ''
|
99
|
+
licenses: []
|
100
|
+
post_install_message:
|
101
|
+
rdoc_options: []
|
102
|
+
require_paths:
|
103
|
+
- lib
|
104
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
111
|
+
none: false
|
112
|
+
requirements:
|
113
|
+
- - ! '>='
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '0'
|
116
|
+
requirements: []
|
117
|
+
rubyforge_project: wsdl-reader
|
118
|
+
rubygems_version: 1.8.10
|
119
|
+
signing_key:
|
120
|
+
specification_version: 3
|
121
|
+
summary: WSDL for ruby
|
122
|
+
test_files: []
|