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.
Files changed (45) hide show
  1. data/.gitignore +4 -0
  2. data/.idea/.name +1 -0
  3. data/.idea/.rakeTasks +7 -0
  4. data/.idea/encodings.xml +5 -0
  5. data/.idea/misc.xml +350 -0
  6. data/.idea/modules.xml +9 -0
  7. data/.idea/projectCodeStyle.xml +123 -0
  8. data/.idea/vcs.xml +7 -0
  9. data/.idea/workspace.xml +683 -0
  10. data/.idea/wsdl-reader.iml +25 -0
  11. data/.rspec +2 -0
  12. data/Gemfile +4 -0
  13. data/Guardfile +9 -0
  14. data/Rakefile +1 -0
  15. data/lib/wsdl-reader.rb +15 -0
  16. data/lib/wsdl-reader/binding.rb +148 -0
  17. data/lib/wsdl-reader/core_ext.rb +28 -0
  18. data/lib/wsdl-reader/error.rb +29 -0
  19. data/lib/wsdl-reader/message.rb +50 -0
  20. data/lib/wsdl-reader/parser.rb +105 -0
  21. data/lib/wsdl-reader/port_type.rb +106 -0
  22. data/lib/wsdl-reader/request.rb +213 -0
  23. data/lib/wsdl-reader/response.rb +72 -0
  24. data/lib/wsdl-reader/service.rb +56 -0
  25. data/lib/wsdl-reader/version.rb +5 -0
  26. data/lib/wsdl-reader/wsdl.rb +48 -0
  27. data/lib/wsdl-reader/xsd.rb +98 -0
  28. data/lib/wsdl-reader/xsd/complextype.rb +136 -0
  29. data/lib/wsdl-reader/xsd/convert.rb +142 -0
  30. data/lib/wsdl-reader/xsd/element.rb +168 -0
  31. data/lib/wsdl-reader/xsd/enumeration.rb +6 -0
  32. data/lib/wsdl-reader/xsd/restriction.rb +76 -0
  33. data/lib/wsdl-reader/xsd/sequence.rb +117 -0
  34. data/lib/wsdl-reader/xsd/simpletype.rb +83 -0
  35. data/spec/binding_spec.rb +67 -0
  36. data/spec/fixtures/OneFileUserService.wsdl +114 -0
  37. data/spec/fixtures/UserService.wsdl +63 -0
  38. data/spec/fixtures/UserService.xsd +56 -0
  39. data/spec/message_spec.rb +22 -0
  40. data/spec/parser_spec.rb +56 -0
  41. data/spec/port_type_spec.rb +32 -0
  42. data/spec/request_spec.rb +9 -0
  43. data/spec/spec_helper.rb +24 -0
  44. data/wsdl-reader.gemspec +27 -0
  45. 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
@@ -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
@@ -0,0 +1,9 @@
1
+ require "spec_helper"
2
+
3
+ describe "Soap Request" do
4
+ #subject { SOAP::Request.new WSDL::Reader::Parser.new('spec/fixtures/OneFileUserService.wsdl') }
5
+
6
+ #it { should be_a SOAP::Request }
7
+
8
+ # its(:getFirstName) { should be_a String }
9
+ end
@@ -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
@@ -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: []