diff options
Diffstat (limited to 'server/buttonDispatcher.py')
-rw-r--r-- | server/buttonDispatcher.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/server/buttonDispatcher.py b/server/buttonDispatcher.py new file mode 100644 index 0000000..5dac61c --- /dev/null +++ b/server/buttonDispatcher.py @@ -0,0 +1,38 @@ +import json +import cherrypy +from button import loadAll, Button +from lib import uuid + +@cherrypy.expose +class ButtonDispatcher(object): + def GET(self, id=None): + if id is None: + return json.dumps(loadAll()) + elif uuid.validate(id): + button = Button() + return button.loadById(id).toJSON() + else: + raise cherrypy.HTTPError(400, 'Invalid ID') + + def POST(self, id, status): + if not uuid.validate(id): + raise cherrypy.HTTPError(401) + + button = Button() + button.loadById(id) + + cherrypy.log("Updating status to " + str(status)) + button.status = status + button.save() + + return button.toJSON() + + def PUT(self): + cherrypy.log('Generating new button') + button = Button() + button.id = uuid.gen() + + return button.save().toJSON() + + def DELETE(self): + return 'DELETE BUTTON' |