simplews 1.6.1 → 1.7.0

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/lib/rake_pipeline.rb CHANGED
@@ -182,6 +182,11 @@ module Rake::Pipeline
182
182
  $_current_job.send(symbol, *args)
183
183
  end
184
184
  else
185
+ # Announce steps
186
+ def step(state, message ="")
187
+ puts "#{ state }: #{ message }"
188
+ end
189
+
185
190
  # Add values to the info file
186
191
  def info(values = {})
187
192
  info = Rake::Pipeline::Info.load_info(@@current_task)
data/lib/simplews/jobs.rb CHANGED
@@ -365,6 +365,11 @@ class SimpleWS::Jobs < SimpleWS
365
365
  end
366
366
 
367
367
  def task(name, params=[], types={}, results = [], &block)
368
+ STEP_DESCRIPTIONS[name.to_s] ||= @@last_description
369
+ PARAMETER_DESCRIPTIONS[name.to_s] ||= @@last_param_description
370
+ @@last_description = nil
371
+ @@last_param_description = nil
372
+
368
373
  Scheduler.task name, results, block
369
374
  serve name.to_s, params + ['suggested_name'], types.merge(:suggested_name => 'string', :return => :string) do |*args|
370
375
  Scheduler.run name, *args
@@ -373,6 +378,11 @@ class SimpleWS::Jobs < SimpleWS
373
378
 
374
379
  @@tasks = {}
375
380
  def self.task(name, params=[], types={}, results =[], &block)
381
+ STEP_DESCRIPTIONS[name.to_s] ||= @@last_description
382
+ PARAMETER_DESCRIPTIONS[name.to_s] ||= @@last_param_description
383
+ @@last_description = nil
384
+ @@last_param_description = nil
385
+
376
386
  Scheduler.task name, results, block
377
387
  @@tasks[name] = {:params => params, :types => types};
378
388
  end
data/lib/simplews.rb CHANGED
@@ -109,6 +109,7 @@ class SimpleWS < SOAP::RPC::StandaloneServer
109
109
 
110
110
  puts "Server #{ name } at #{ host }:#{ port }"
111
111
 
112
+ desc "Return the WSDL describing the web server"
112
113
  serve :wsdl, %w(), :return => :string
113
114
  METHODS.each{|name, info|
114
115
  serve name, info[:args], info[:types], &info[:block]
@@ -121,8 +122,32 @@ class SimpleWS < SOAP::RPC::StandaloneServer
121
122
  default_namespace = "urn:#{name}"
122
123
  end
123
124
 
124
-
125
+ # Add a description for the next method served.
126
+ @@last_description = nil
127
+ @@last_param_description = nil
128
+ STEP_DESCRIPTIONS = {}
129
+ PARAMETER_DESCRIPTIONS = {}
130
+ def desc(text)
131
+ @@last_description = text
132
+ end
125
133
 
134
+ # Add descriptions for the parameters of the next method served
135
+ def param_desc(param_descriptions)
136
+ @@last_param_description = {}
137
+ param_descriptions.each{|param, description| @@last_param_description[param.to_s] = description}
138
+ end
139
+
140
+ # Add a description for the next method served defined in at the class level
141
+ def self.desc(text)
142
+ @@last_description = text
143
+ end
144
+
145
+ # Add descriptions for the parameters of the next method served at the class
146
+ # level
147
+ def self.param_desc(param_descriptions)
148
+ @@last_param_description = {}
149
+ param_descriptions.each{|param, description| @@last_param_description[param.to_s] = description}
150
+ end
126
151
 
127
152
  # This method tells the server to provide a method named by the +name+
128
153
  # parameter, with arguments listed in the +args+ parameter. The
@@ -138,7 +163,10 @@ class SimpleWS < SOAP::RPC::StandaloneServer
138
163
  # method is taken to return no value. Other than that, if a parameter
139
164
  # type is omitted it is taken to be :string.
140
165
  def serve(name, args=[], types={}, &block)
141
-
166
+ STEP_DESCRIPTIONS[name] ||= @@last_description
167
+ PARAMETER_DESCRIPTIONS[name] ||= @@last_param_description
168
+ @@last_description = nil
169
+ @@last_param_description = nil
142
170
  if block
143
171
  inline_name = "_inline_" + name.to_s
144
172
  add_to_ruby(inline_name, &block)
@@ -156,6 +184,10 @@ class SimpleWS < SOAP::RPC::StandaloneServer
156
184
  # instance check if there where any methods declared to be served in the class
157
185
  # and add them.
158
186
  def self.serve(name, args=[], types={}, &block)
187
+ STEP_DESCRIPTIONS[name] ||= @@last_description
188
+ PARAMETER_DESCRIPTIONS[name] ||= @@last_param_description
189
+ @@last_description = nil
190
+ @@last_param_description = nil
159
191
  METHODS[name] = {:args => args, :types => types, :block => block}
160
192
  end
161
193
 
@@ -193,20 +225,30 @@ class SimpleWS < SOAP::RPC::StandaloneServer
193
225
  args.each{|param|
194
226
  type = types[param.to_s] || types[param.to_sym] || :string
195
227
  type = type.to_sym
196
- xml.part :name => param, :type => TYPES2WSDL[type]
228
+ xml.part :name => param, :type => TYPES2WSDL[type] do
229
+ if PARAMETER_DESCRIPTIONS[name] && PARAMETER_DESCRIPTIONS[name][param.to_s]
230
+ xml.documentation PARAMETER_DESCRIPTIONS[name][param.to_s]
231
+ end
232
+ end
197
233
  }
198
234
  end
199
235
  @messages << message
236
+
200
237
  message = Builder::XmlMarkup.new(:indent => 2).message :name => "#{ name }Response" do |xml|
201
238
  type = types[:return] || types["return"] || :string
202
239
  if type
203
240
  type = type.to_sym
204
- xml.part :name => 'return', :type => TYPES2WSDL[type]
205
- end
241
+ end
242
+ xml.part :name => 'return', :type => TYPES2WSDL[type] do
243
+ if PARAMETER_DESCRIPTIONS[name] && PARAMETER_DESCRIPTIONS[name]['return']
244
+ xml.documentation PARAMETER_DESCRIPTIONS[name]['return']
245
+ end
246
+ end
206
247
  end
207
248
  @messages << message
208
249
 
209
250
  operation = Builder::XmlMarkup.new(:indent => 2).operation :name => "#{ name }" do |xml|
251
+ xml.documentation STEP_DESCRIPTIONS[name] if STEP_DESCRIPTIONS[name]
210
252
  xml.input :message => "tns:#{ name }Request"
211
253
  xml.output :message => "tns:#{ name }Response"
212
254
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simplews
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.1
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez