I am not sure you should register services in controller, unless you
also want to expose them as actions. I normally put them in a model.
Anyway...

@service.xmlrpc
@service.jsonrpc
@service.whetever

register a function as a service

def call(): return service()

simply exposes all services.

You can do

@auth.requires(auth.user)
def call(): return service()

and you will get an unauthorized error


On Oct 24, 11:19 am, "david.waldrop" <[email protected]> wrote:
> I have spent the bulk of last evening and this morning trying to test
> web2py services and authorization.  In addition to setting
> auth.settings.allow_basic_login = True I have deleted the "call
> function" in the default controller, created a seperate controller
> "mmservices",and and populated with the following code:
>
> @auth.requires_login()
> def call():
>     """
>     exposes services. for example:
>    http://..../[app]/default/call/jsonrpc
>     decorate with @services.jsonrpc the functions to expose
>     supports xml, json, xmlrpc, jsonrpc, amfrpc, rss, csv
>     """
>     session.forget()
>     return service()
>
> @service.xmlrpc
> def getmeetings():
>     if auth.is_logged_in():
>         return 'you are logged in!'
>     else:
>         return 'NO DICE'
>
> @service.xmlrpc
> def test(insink):
>     if auth.is_logged_in():
>         return 'test: you are logged in!'
>     else:
>         return 'test: NO DICE'
>
> My questions are:
>
> 1) what is the purpose of the "call" function?  I see that it is part
> of the proxy when invoking, but am not sure where it gets invoked or
> what it does.  Does there need to be a separate call for each web-
> service function (as I saw in a forum post)?
>
> 2) when i enterhttp://www.meetingmonkey.net/init/mmservices/getmeetings
> without logging in I get "no dice". I suspect this is due to the fact
> that I am accessing the function because it is in a controller.  This
> is not the desired behavior as I want to ensure the user has logged in
> before getting access to the function.  Is there a complete example of
> the best practice for implementing web-services including where to put
> various parts of code?
>
> 3) when I 
> enterhttp://www.meetingmonkey.net/init/mmservices/call/xmlrpc/getmeetings
> without logging 8in I am redirected to the login page.  I would rather
> just return an unauthorized error, but do not know how to do?

Reply via email to