python-ubuntuone-rest-server/ubuntuone.py
2011-09-02 23:32:23 -04:00

41 lines
1,018 B
Python
Executable file

#!/usr/bin/env python
from BaseHTTPServer import BaseHTTPRequestHandler
import urlparse
import dbus
import json
bus = dbus.SessionBus()
class GetHandler(BaseHTTPRequestHandler):
def do_GET(self):
parts = self.path.lower().split('/')
payload = '{"error": "invalid request"}'
if len(parts) == 3:
interface = parts[1]
method = parts[2]
u1_object = bus.get_object('com.ubuntuone.SyncDaemon', '/' + interface)
u1_interface = dbus.Interface(u1_object, 'com.ubuntuone.SyncDaemon.' + interface.capitalize())
try:
func = getattr(u1_interface, method)
except AttributeError:
payload = '{"error": "unknown method"}'
else:
payload = json.dumps(func())
self.send_response(200)
self.send_header('Content-Type', 'application/json')
self.end_headers()
self.wfile.write(payload)
return
if __name__ == '__main__':
from BaseHTTPServer import HTTPServer
server = HTTPServer(('', 3000), GetHandler)
print 'Starting server, use <Ctrl-C> to stop'
server.serve_forever()