From Second Life Wiki
< Mulib
Revision as of 16:19, 24 August 2007 by Which Linden (Talk | contribs)

Jump to: navigation, search

Mulib Examples

These are some short examples to give a flavor of using mulib.

hello world

The following program will bring up a webserver listening on port 8080 which can respond to a single request, "GET /", with the response "hello, world":

from mulib import mu

from eventlet import api, httpd

class HelloWorld(mu.Resource):
   def handle_get(self, req):
       req.write("hello, world\n")

root = HelloWorld()

   api.tcp_listener(('', 8080)),


Stacked is a pure REST server, and you can use it to traverse native python objects like dicts.

 from mulib import mu
 from eventlet import api, httpd
 root = {'':'hello, world\n',
         'other':"hello, other\n"}
 httpd.server(api.tcp_listener(('', 8080)), mu.SiteMap(root))

You can then access this dictionary as a REST resource, e.g.

 > curl http://localhost:8080/     
 hello, world
 > curl http://localhost:8080/other
 hello, other
 > curl -X PUT -d "the new data" http://localhost:8080/third
 > curl http://localhost:8080/third
 the new data

Mu/stacked can do content negotiation:

 > curl -X PUT -H "Content-type: application/json" -d '{"hi": "there"}' http://localhost:8080/fourth
 > curl http://localhost:8080/fourth/hi
 > curl -H "Accept: application/json" http://localhost:8080/fourth
 {'hi': 'there'}

Note: This means that anyone who has access to your stacked web service can modify the data in your process! In the future we might have a 'read-only' implementation.