[Rails] [ANN] WebserviceHelper

Pelle Braendgaard pelleb at gmail.com
Mon Jan 31 12:34:06 GMT 2005


Very cool stuff. I will probably use this to add SOAP support for
http://soapbx.com

Pelle


On Sun, 30 Jan 2005 20:54:22 +1300, leon breedt <bitserf at gmail.com> wrote:
> Hello fellow Railers,
> 
> I've written a WebserviceHelper which I thought some folks may find useful.
> 
> What does it do?
> =============
> 
> Provides an easy way to drop in SOAP-based web services into your
> controllers. It can generate typed WSDL for you, which means people
> using .NET can use your web service and they'll still get their nice
> "int", "bool", "CustomStruct" types in their C#-side API.
> 
> How does it work?
> ==============
> 
> Its pretty non-intrusive. Declare that you are using the helper in
> your controller, and indicate which actions are going to serve as
> "entry points" (ports in WSDL terminology) to your API.
> 
> Example:
> 
> class ApiController < ApplicationController
>   helper :webservice
> 
>   wsdl_port :person, PersonApi.new
> end
> 
> What this does is generate the :person action, installing a filter
> object to dispatch SOAP actions when /api/person is accessed by
> clients. It also creates "wsdl" action accessible via /api/wsdl, which
> will output a WSDL file for the API.
> 
> To get the typing right, you need to annotate attributes and methods
> in your PersonApi class to indicate the desired types for method input
> parameters and return values.
> 
> Example:
> 
> class PersonApi
>   extend WebService
> 
>   wsdl
>   def some_method_with_no_parameters_or_interesting_return_values
>   end
> 
>   wsdl :out => [[Integer]]
>   def method_returning_int_array
>      [1, 2, 3]
>   end
> 
>   wsdl :in => [String]
>   def method_expecting_string(str)
>   end
> end
> 
> See http://blog.xeraph.org/software/WebserviceHelper/doc/ for more
> details on how it hangs together.
> 
> Where do I get it?
> ==============
> 
> http://blog.xeraph.org/software/WebserviceHelper/WebserviceHelper-0.1.tar.gz.
> 
> Just extract over your Rails app, contains
> app/helper/webservice_helper.rb and lib/web/service.rb.
> 
> The bulk of the code lies in lib/web/service.rb, and the vast majority
> of code in there is just to do with mapping between SOAP, WSDL and
> Ruby types. Someone more knowledgeable in this area, feel free to
> criticize the implementation, as I'm sure mine sucks :)
> 
> I don't believe you about .NET interoperability, how do I test that?
> ==================================================
> 
> Have Mono or .NET framework installed (I've only testetd on Mono though).
> 
> Do:
> 
> $ wget http://localhost:3000/controller/wsdl
> $ mv wsdl Something.wsdl
> $ wsdl -o Something Something.wsdl
> $ vi SomethingService.cs
> ... add a Main() that calls methods on a SomethingService instance ...
> $ mcs -reference:System.Web.Services SomethingService.cs
> $ mono SomethingService.exe
> 
> Comments, bug reports, suggestions welcome!
> Leon
> _______________________________________________
> Rails mailing list
> Rails at lists.rubyonrails.org
> http://lists.rubyonrails.org/mailman/listinfo/rails
> 


-- 
http://talk.org      + Live and direct from Panama
http://SoapBX.com + Get on the box and shout
http://econotrix.com + Rants on the economy and everything
http://neuclear.com  + The World Wide Web of Assets


More information about the Rails mailing list