]> git.cworth.org Git - turbot/blob - turbot.py
Initial commit of turbot
[turbot] / turbot.py
1 #!/usr/bin/env python3
2
3 from flask import Flask
4 from flask_restful import reqparse, abort, Api, Resource
5
6 app = Flask(__name__)
7 api = Api(app)
8
9 TODOS = {}
10
11 def abort_if_todo_doesnt_exist(todo_id):
12     if todo_id not in TODOS:
13         abort(404, message="Todo {} doesn't exist".format(todo_id))
14
15 parser = reqparse.RequestParser()
16 parser.add_argument('task')
17
18 class Todo(Resource):
19     def get(self, todo_id):
20         abort_if_todo_doesnt_exist(todo_id)
21         return TODOS[todo_id]
22
23     def delete(self, todo_id):
24         abort_if_todo_doesnt_exist(todo_id)
25         del TODOS[todo_id]
26         return '', 204
27
28     def put(self, todo_id):
29         args = parser.parse_args()
30         task = {'task': args['task']}
31         TODOS[todo_id] = task
32         return task, 201
33
34 class TodoList(Resource):
35     def get(self):
36         return TODOS
37
38     def post(self):
39         args = parser.parse_args()
40         try:
41             todo_id = int(max(TODOS.keys()).lstrip('todo')) + 1
42         except:
43             todo_id = 1
44         todo_id = 'todo%i' % todo_id
45         TODOS[todo_id] = {'task': args['task']}
46         return TODOS[todo_id], 201
47
48 api.add_resource(TodoList, '/todos')
49 api.add_resource(Todo, '/todos/<todo_id>')
50
51 if __name__ == '__main__':
52     app.run(debug=True)