troelskn-handsoap 0.2.6 → 0.2.7
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/README.markdown +8 -1
- data/VERSION.yml +1 -1
- data/generators/handsoap/handsoap_generator.rb +13 -2
- data/lib/handsoap/xml_mason.rb +12 -2
- metadata +2 -2
data/README.markdown
CHANGED
|
@@ -78,13 +78,14 @@ Recommendations
|
|
|
78
78
|
|
|
79
79
|
###Workflow
|
|
80
80
|
|
|
81
|
-
1.
|
|
81
|
+
1. You need a WSDL for the service you want to consume.
|
|
82
82
|
|
|
83
83
|
2. Figure out the url for the endpoint, as well as the protocol version. Put this in a config file.
|
|
84
84
|
* To find the endpoint, look inside the wsdl, for `<soap:address location="..">`
|
|
85
85
|
|
|
86
86
|
3. Create a service class. Add endpoints and protocol. Alias needed namespace(s).
|
|
87
87
|
* To find the namespace(s), look in the samples from soapUI. It will be imported as `v1`
|
|
88
|
+
* Note that you can now use the provided generator to skip this step.
|
|
88
89
|
|
|
89
90
|
4. Open the wsdl in [soapUI](http://www.soapui.org/).
|
|
90
91
|
|
|
@@ -119,6 +120,12 @@ If you use Rails, you will need to load the gem from the `config/environment.rb`
|
|
|
119
120
|
|
|
120
121
|
config.gem 'troelskn-handsoap', :lib => 'handsoap', :source => "http://gems.github.com"
|
|
121
122
|
|
|
123
|
+
###Generator
|
|
124
|
+
|
|
125
|
+
From version 0.2.0 Handsoap sports a generator, that creates the service class + an integration test case. This is just a rough starting point for your service - You still have to fill out the actual mappings to/from xml, but at least it saves your some copy-pasting from this guide.
|
|
126
|
+
|
|
127
|
+
To use the generator, create a Rails project and run the script `script/generate handsoap`, giving the url of the WSDL.
|
|
128
|
+
|
|
122
129
|
###Service class
|
|
123
130
|
|
|
124
131
|
Put your service in a file under `app/models`. You should extend `Handsoap::Service`.
|
data/VERSION.yml
CHANGED
|
@@ -39,8 +39,15 @@ class HandsoapGenerator < Rails::Generator::Base
|
|
|
39
39
|
end
|
|
40
40
|
# TODO
|
|
41
41
|
# Ask user about which endpoints to use ?
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
m.message do |out|
|
|
43
|
+
out.puts "----"
|
|
44
|
+
out.puts "Endpoints in WSDL"
|
|
45
|
+
out.puts " You should copy these to the appropriate environment files."
|
|
46
|
+
out.puts " (Eg. `config/environments/*.rb`)"
|
|
47
|
+
out.puts "----"
|
|
48
|
+
out.puts Handsoap::Compiler.compile_endpoints(wsdl, protocol)
|
|
49
|
+
out.puts "----"
|
|
50
|
+
end
|
|
44
51
|
end
|
|
45
52
|
end
|
|
46
53
|
|
|
@@ -68,6 +75,10 @@ module Handsoap #:nodoc:
|
|
|
68
75
|
end
|
|
69
76
|
end
|
|
70
77
|
|
|
78
|
+
def message(&block)
|
|
79
|
+
yield $stdout
|
|
80
|
+
end
|
|
81
|
+
|
|
71
82
|
private
|
|
72
83
|
|
|
73
84
|
# Convert the given absolute path into a path
|
data/lib/handsoap/xml_mason.rb
CHANGED
|
@@ -78,6 +78,12 @@ module Handsoap
|
|
|
78
78
|
end
|
|
79
79
|
end
|
|
80
80
|
|
|
81
|
+
class RawContent < TextNode
|
|
82
|
+
def to_s(indentation = '')
|
|
83
|
+
@text
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
81
87
|
class Element < Node
|
|
82
88
|
def initialize(parent, prefix, node_name, value = nil)
|
|
83
89
|
super()
|
|
@@ -109,11 +115,15 @@ module Handsoap
|
|
|
109
115
|
@children << node
|
|
110
116
|
return node
|
|
111
117
|
end
|
|
112
|
-
def set_value(value)
|
|
118
|
+
def set_value(value, *flags)
|
|
113
119
|
if @children.length > 0
|
|
114
120
|
raise "Element already has children. Can't set value"
|
|
115
121
|
end
|
|
116
|
-
|
|
122
|
+
if flags && flags.include?(:raw)
|
|
123
|
+
@children = [RawContent.new(value)]
|
|
124
|
+
else
|
|
125
|
+
@children = [TextNode.new(value)]
|
|
126
|
+
end
|
|
117
127
|
end
|
|
118
128
|
def set_attr(name, value)
|
|
119
129
|
full_name = parse_ns(name).join(":")
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: troelskn-handsoap
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.7
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Troels Knak-Nielsen
|
|
@@ -9,7 +9,7 @@ autorequire:
|
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
11
|
|
|
12
|
-
date: 2009-06-
|
|
12
|
+
date: 2009-06-12 00:00:00 -07:00
|
|
13
13
|
default_executable:
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|