module Sinatra::Soap::HelperMethods
Public Instance Methods
call_action_block()
click to toggle source
# File lib/sinatra/soap/helper_methods.rb, line 12 def call_action_block request = Soap::Request.new(env, request, params) response = request.execute builder :response, locals: {wsdl: response.wsdl, params: response.params}, :views => self.soap_views rescue Soap::Error => e builder :error, locals: {e: e}, :views => self.soap_views end
get_wsdl()
click to toggle source
# File lib/sinatra/soap/helper_methods.rb, line 20 def get_wsdl if defined?(settings.wsdl_path) path = File.join(settings.public_folder, settings.wsdl_path) if File.exist?(path) File.read(path) else raise "No wsdl file" end else builder :wsdl, locals: {wsdl: Soap::Wsdl.actions}, :views => self.soap_views end end
soap_views()
click to toggle source
Return the location where we can find our views
# File lib/sinatra/soap/helper_methods.rb, line 8 def soap_views() File.join(File.dirname(__FILE__), "..", "views") end
wsdl_occurence(param, inject, extend_with = {})
click to toggle source
# File lib/sinatra/soap/helper_methods.rb, line 33 def wsdl_occurence(param, inject, extend_with = {}) param=Param.new(param[0], param[1]) extend_with = { :name => param.name, :type => param.namespaced_type } data = !param.multiplied ? {} : { "#{'xsi:' if inject}minOccurs" => 0, "#{'xsi:' if inject}maxOccurs" => 'unbounded' } extend_with.merge(data) end
wsdl_type(xml, param, defined=[])
click to toggle source
# File lib/sinatra/soap/helper_methods.rb, line 43 def wsdl_type(xml, param, defined=[]) param = Param.new(param[0], param[1]) more = [] if param.struct? if !defined.include?(param.basic_type) xml.tag! "xsd:complexType", :name => param.basic_type do xml.tag! "xsd:sequence" do param.map.each do |value| param_value = Param.new(value[0], value[1]) more << value if param_value.struct? xml.tag! "xsd:element", wsdl_occurence(value, false) end end end defined << param.basic_type elsif !param.classified? raise RuntimeError, "Duplicate use of `#{param.basic_type}` type name. Consider using classified types." end end more.each do |p| wsdl_type xml, p, defined end end