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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
import cherrypy
songs = {
'1': {
'title': 'Lumberjack Song',
'artist': 'Canadian Guard Choir'
},
'2': {
'title': 'Always Look On the Bright Side of Life',
'artist': 'Eric Idle'
},
'3': {
'title': 'Spam Spam Spam',
'artist': 'Monty Python'
}
}
class Songs:
exposed = True
def GET(self, id=None):
if id is None:
return('Here are all the songs we have: %s' % songs)
elif id in songs:
song = songs[id]
return(
'Song with the ID %s is called %s, and the artist is %s' % (
id, song['title'], song['artist']))
else:
return('No song with the ID %s :-(' % id)
def POST(self, title, artist):
id = str(max([int(_) for _ in songs.keys()]) + 1)
songs[id] = {
'title': title,
'artist': artist
}
return ('Create a new song with the ID: %s' % id)
def PUT(self, id, title=None, artist=None):
if id in songs:
song = songs[id]
song['title'] = title or song['title']
song['artist'] = artist or song['artist']
return(
'Song with the ID %s is now called %s, '
'and the artist is now %s' % (
id, song['title'], song['artist'])
)
else:
return('No song with the ID %s :-(' % id)
def DELETE(self, id):
if id in songs:
songs.pop(id)
return('Song with the ID %s has been deleted.' % id)
else:
return('No song with the ID %s :-(' % id)
if __name__ == '__main__':
cherrypy.tree.mount(
Songs(), '/api/songs',
{'/':
{'request.dispatch': cherrypy.dispatch.MethodDispatcher()}
}
)
cherrypy.engine.start()
cherrypy.engine.block()
|