[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