Mulib/Examples

From Second Life Wiki
< Mulib
Revision as of 16:13, 24 August 2007 by Which Linden (talk | contribs) (New page: = 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 resp...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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()

httpd.server(
   api.tcp_listener(('0.0.0.0', 8080)),
   mu.SiteMap(root))


stacked

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(('0.0.0.0', 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
there
> 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.