From: Kutter M. <mar...@si...> - 2004-10-06 10:14:11
|
Hi Heiko, OI2's solution is maybe technical, but does not have any impacts asides from a few more lines in the config file. The config [foo] content-generator = TT class = MyFoo::Action [fooWebService] content-generator = SOAP class = MyFoo::Action direct both actions to the same perl module. There is no need to include the name of the content generator in the action's name - it was just an example. For an end user, an OI2 action is just a URL-snippet - and SOAP programmers definitely won't regard an URL containing something like '_soap' or 'WebService' or the like as strange - it's rather normal. Delegating Content-Generator switching to the Request Handler has some serious disadvantages: - Your suggestion would accept requests for all content handlers on the same URL. If you access an URL hosting a WWW-(HTML)-page with a SOAP-Call, (or a SOAP-Webservice with a browser) you would expect this call to fail or be at least non-functional. Your suggestion would change this. Moreover, Requests from a Browser and SOAP-Requests could be required to use different authentications (e.g. normal Username/Password for WWW-Forms, Client SSL Certificate for SOAP). This is very hard to implement for different contents on the same URL (Apache can handle this for different URLs). Determining the request type from the request content is rather difficult, if at all possible. The SOAP protocol defines not only a "Request-Response" model with SOAP request & SOAP response, but also a "Response" model, where the request is a simple HTTP GET (This is not supported by the current OI2 SOAP implementation). I don't know how you would find out whether a GET on the same URL is meant for a SOAP content generator or a PDF content generator. - Making the Request handler decide about Content Generation would expose all tasks of an action via all content generators (or introduce the same configuration overhad different actions do). This is to be avoided: Maybe you do not want to make some functions accessible via other means than SOAP, and maybe you don't want some other pages accessible via SOAP or PDF content generators (Forms for editing data are a classical WWW-Form-only example). - The need for all "HTML" requests to match /\.html$/ and all PDF requests match /\.pdf$/ is a very artificial requirement almost never seen on web-servers on the internet. Or would you expect that e-bay would require you to request http://www.ebay.com/index.html instead of http://www.ebay.com as a start page ? This would confuse end-users more than having to access different URLs for PDF, HTML and SOAP version (something quite general: The usual "print version" link on lots of pages). In my opinion, the current scheme has enough power to handle most scenarios. I don't think a request-type aware RequestHandler would bring more benefits than disadvantages. Regards, Martin Kutter -----Original Message----- From: ope...@li... [mailto:ope...@li...]On Behalf Of Heiko Klein Sent: Mittwoch, 6. Oktober 2004 10:51 To: ope...@li... Subject: Re: [Openinteract-help] Using several content-generators for one action? Hmmm, declaring a different action for a different content-generator is a rather technical than user-friendly solution. I guess we will end up with something like: [foo] content-generator = TT [foo_soap] content-generator = SOAP [foo_wap] content-genertor = WAP [foo_pdf] content-genertor = GS-PDF and we will have to write a lots of stuff for each of these action. Since a action is more of a class or namespace for a method, I don't see why it needs to include the content generator. [foo_soap] needs a SOAP response and request generator. The soap API user will think its very strange that all namespaces have _soap included. [foo_pdf] and [foo_wap] will most likely have a request for something ending with .pdf as an ending. (At least, nobody would think it's strange when you require this.) Without having looked closely at the code yet, I would make the request generator determine the content-type. After setting some default (most likely to .html), when the request ends with .pdf to pdf and with .wap to wap. SOAP has a different request-generator, so it will be very easy to set the content-type to soap there. The only situation, where you will need different actions is when you want to present the same content-type (html) with different html-content-generators - IMHO not a very common situation in production. (In testing, sure this will happen, but for test-pages I want to have the possibilty to switch between foo_TT and foo_HTMLTemplate.) So, if it makes sense, it is a feature request to implement several content-generator determined by content-type per action: [foo] content-generator default = TT content-generator soap = SOAP content-generator pdf = GS-PDF ... (don't know if this is parseable by the .ini-reader) Best regards, Heiko Chris Winters wrote: >>I'm currently trying out Martin Kutters SOAP add on for OpenInteract2. >>My idea is to use soap as remote API for OI2. Thus I would like to have >>two content-generators for all packages, one giving the usual >>html-response, and the other one giving a soap response. > > > That's been my idea for SOAP as well. > > >>When I understand the current implementation of OI correct, then it is >>in principle possible to have several content generators in OI, but one >>action has exactly one content generator, defined by the action.ini >>file, not by the Response-type. I hope I'm wrong with this assumption, >>so my question is, how do I enable different content-generators for one >>action? Or is my understanding of an 'action' wrong? > > > Your understanding is right. But I think what's missing is you can map > multiple action specifications to the same class. For instance in an > action.ini you might have: > > [foo] > class = OpenInteract2::Action::Foo > content_generator = TT > > [bar] > class = OpenInteract2::Action::Foo > content_generator = SOAP > > The same data are retrieved from the action + task, but they're passed off > to a different content generator depending on how they were invoked. Make > sense? > > The 'news' package has some commented-out examples of doing this with > Text::Template and HTML::Template. > > >>And in some packages, I haven't seen the content_generator flag in the >>action.ini. Where is the default defined? > > > In server.ini: > > [action_info default] > controller = tt-template > content_generator = TT > > Hope this helps, > > Chris > ------------------------------------------------------- This SF.net email is sponsored by: IT Product Guide on ITManagersJournal Use IT products in your business? Tell us what you think of them. Give us Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out more http://productguide.itmanagersjournal.com/guidepromo.tmpl _______________________________________________ openinteract-help mailing list ope...@li... https://lists.sourceforge.net/lists/listinfo/openinteract-help |