commit 58f96b9f51c4ffa4abd5b2a7a56a48d9038688aa Author: Matt Date: Sun May 17 21:56:48 2020 -0500 Init. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..56be3e5 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/flask* \ No newline at end of file diff --git a/app.py b/app.py new file mode 100644 index 0000000..e695c79 --- /dev/null +++ b/app.py @@ -0,0 +1,69 @@ +#!flask/bin/python +from flask import Flask, jsonify, abort, make_response, request +from flask_httpauth import HTTPBasicAuth + +auth = HTTPBasicAuth() + +app = Flask(__name__) + +tasks = [ + { + 'id': 1, + 'title': u'Buy groceries', + 'description': u'Milk, Cheese, Pizza, Fruit, Tylenol', + 'done': False + }, + { + 'id': 2, + 'title': u'Learn Python', + 'description': u'Need to find a good Python tutorial on the web', + 'done': False + } +] + +@auth.get_password +def get_password(username): + if username == 'matt': + return 'python' + return None + +@auth.error_handler +def unauthorized(): + return make_response(jsonify({'error': 'Unauthorized access'}), 403) + +@app.route('/') +def index(): + return "Hello, World!" + +@app.route('/todo/api/v1.0/new', methods=['POST']) +@auth.login_required +def create_task(): + if not request.json or not 'title' in request.json: + abort(400) + task = { + 'id': tasks[-1]['id'] + 1, + 'title': request.json['title'], + 'description': request.json.get('description', ""), + 'done': False + } + tasks.append(task) + return jsonify({'task': task}), 201 + +@app.route('/todo/api/v1.0/tasks', methods=['GET']) +def get_tasks(): + return jsonify({'tasks': tasks}) + +@app.route('/todo/api/v1.0/tasks/', methods=['GET']) +def get_task(task_id): + task = [task for task in tasks if task['id'] == task_id] + if len(task) == 0: + abort(404) + return jsonify({'task': task[0]}) + +@app.errorhandler(404) +def not_found(error): + return make_response(jsonify({'error': 'Not found'}), 404) + +if __name__ == '__main__': + app.run(debug=True) +