cool! would you make a pyslice?

On Oct 28, 12:20 pm, hcvst <[email protected]> wrote:
> Rough and dirty - but works for capabilities.xml already. It's odd
> that google's start_response returns a write method - at least it's
> not
> what the wsgi tutorials do - and does not return anything from the app
> (env, start_response) call. Oh well.
>
> ---
>
> # coding: utf8
>
> import sys
> import cStringIO
>
> path = 'applications/%s/modules' % request.application
> if not path in sys.path: sys.path.append(path)
>
> from google.appengine.ext import webapp
> from waveapi import events
> from waveapi import model
> from waveapi import robot
>
> def OnParticipantsChanged(properties, context):
>   """Invoked when any participants have been added/removed."""
>   added = properties['participantsAdded']
>   for p in added:
>     Notify(context)
>
> def OnRobotAdded(properties, context):
>   """Invoked when the robot has been added."""
>   root_wavelet = context.GetRootWavelet()
>   root_wavelet.CreateBlip().GetDocument().SetText("I'm alive!")
>
> def Notify(context):
>   root_wavelet = context.GetRootWavelet()
>   root_wavelet.CreateBlip().GetDocument().SetText("Hi everybody!")
>
> # Web2py function
> def process():
>
>     def normalize(x):
>         if x.startswith('wsgi'):
>             return x.replace('_', '.', 1)
>         else:
>             return x.upper()
>
>     buffer = cStringIO.StringIO()
>     def start_response(status, headers, exc_info=None):
>         status_code, status_txt = status.split(' ',1)
>         if status_txt == 'OK':
>             for k,v in headers:
>                 response.headers[k] = v
>         else:
>             raise HTTP(status_code)
>         return buffer.write
>
>     wsgienv = dict()
>     for k, v in request.env.items():
>         wsgienv[normalize(k)] = v
>
>     myRobot = robot.Robot('wavedirectory',
>         image_url='http://wavedirectory.appspot.com/icon.png',
>         version='1',
>         profile_url='http://wavedirectory.appspot.com/')
>     myRobot.RegisterHandler(events.WAVELET_PARTICIPANTS_CHANGED,
> OnParticipantsChanged)
>     myRobot.RegisterHandler(events.WAVELET_SELF_ADDED, OnRobotAdded)
>
>     app = webapp.WSGIApplication([
>         ('/init/robot/process/capabilities.xml', lambda:
> robot.RobotCapabilitiesHandler(myRobot)),
>         ('/_wave/robot/profile', lambda: robot.RobotProfileHandler
> (myRobot)),
>         ('/_wave/robot/jsonrpc', lambda: robot.RobotEventHandler
> (myRobot)),
>         ], debug=False)
>     app(wsgienv, start_response)
>
>     buffer.seek(0)
>     return buffer.read()
>
> On Oct 28, 5:13 pm, mdipierro <[email protected]> wrote:
>
> > I would do the same, the problem is the original environment is not
> > passed to the function there should be a hook for that. Something
> > like:
>
> > request._wsgi_environ
>
> > Massimo
>
> > On Oct 28, 9:42 am, hcvst <[email protected]> wrote:
>
> > > Hi Massimo,
>
> > > I am trying to write a Google wave bot and use the wavebot client api
> > > as directly as possible as the internals are likely to change.
> > > Bots are just wsgi apps.
>
> > > I've changed routes_in to map all calls originating from wave to
> > > one controller function.
>
> > > Perhaps I should just emulate env and start_response:
> > > env would equal more or less request.env (all Caps and '_' replaced
> > > with '-' )
> > > and start_response would be a simple callback to set response headers
> > > (and to
> > > raise an HTTP x if not OK 200).
>
> > > How would you go about this?
>
> > > Thanks,
> > > HC
>
> > > On Oct 28, 4:06 pm, mdipierro <[email protected]> wrote:
>
> > > > On Oct 28, 7:05 am, hcvst <[email protected]> wrote:
>
> > > > > Hi,
>
> > > > > can I dispatch from a w2p controller to another wsgi app? Sth like:
>
> > > > > def index():
> > > > >     wsgiapp(env, start_response)
>
> > > > No
>
> > > > > Alternatively, is there a method to write the HTTP response directly,
> > > > > where 'directly' could mean directly to the socket itself?
>
> > > > No but the above approach would not allow that ether bacuse
> > > > start_response writes the headers anyway. Tell'us what you are trying
> > > > to accomplish because I am sure there is a way.
>
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to