blob: 59672d66f7a38ee46b0057398f71a876d80441f3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
import json
import cherrypy
from button import loadAll, Button
from dispatcher import Dispatcher
from lib import uuid
# Tweak: consider using serpy for serializing objects for JSON.
@cherrypy.expose
class ButtonDispatcher(Dispatcher):
def GET(self, id=None):
# GET /button - return all buttons
if id is None:
return self.response(loadAll())
# GET /button/{id} - return single button
self.validate_uuid(id)
button = Button()
return self.response(button.loadById(id).toJSON())
def POST(self, id, status):
# POST /button/{id}?status={} - updates button status
self.validate_uuid(id)
button = Button()
button.loadById(id)
cherrypy.log("Updating status to " + str(status))
# TODO validate status
button.status = int(status)
button.save()
return self.response(button.toJSON())
def PUT(self, id=None):
button = Button()
# PUT /button - creates button
if id is None:
button.id = uuid.gen()
return self.response(button.save().toJSON())
# PUT /button/{id} - presses button
else:
button.loadById(id)
button.press()
button.save()
return self.response(button.toJSON())
def DELETE(self, id):
# DELETE /button/{id} - deletes button
button = Button()
button.loadById(id)
button.delete()
return self.response(True)
|