-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.py
111 lines (76 loc) · 3.01 KB
/
app.py
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
from database import get_db
from flask import Flask, g, jsonify, request
from functools import wraps
app = Flask(__name__)
api_username = 'admin'
api_password = 'admin'
def protected(f):
@wraps(f)
def decorated(*args, **kwargs):
auth = request.authorization
if auth and auth.username == api_username and auth.password == api_password:
return f(*args, **kwargs)
return jsonify({'message': 'Authentication Failed....!'}), 403
return decorated
# decorator of the database
@app.teardown_appcontext
def close_db(error):
if hasattr(g, 'sqlite_db'):
g.sqlite_db.close()
@app.route('/member', methods=['GET'])
@protected
def get_members():
db = get_db()
members_cursor = db.execute('select id, name, email, level from members')
members = members_cursor.fetchall()
return_values = []
for member in members:
member_dict = {}
member_dict['id'] = member['id']
member_dict['name'] = member['name']
member_dict['email'] = member['email']
member_dict['level'] = member['level']
return_values.append(member_dict)
return jsonify({'members' : return_values})
@app.route('/member/<int:member_id>', methods=['GET'])
@protected
def get_member(member_id):
db = get_db()
member_cursor = db.execute('select id, name, email, level from members where id = ?',[member_id])
member = member_cursor.fetchone()
return jsonify({'member': {'id': member['id'], 'name' : member['name'], 'email' : member['email'], 'level' : member['level']}})
@app.route('/member', methods=['POST'])
@protected
def add_member():
new_member_data = request.get_json()
name = new_member_data['name']
email = new_member_data['email']
level = new_member_data['level']
db = get_db()
db.execute('insert into members (name, email, level) values (?,?,?)', [name, email, level])
db.commit()
member_cursor = db.execute('select id, name, email, level from members where name = ?', [name])
new_member = member_cursor.fetchone()
return jsonify({'member': {'id' : new_member['id'], 'name' : new_member['name'], 'email' : new_member['email'], 'level' : new_member['level']}})
@app.route('/member/<int:member_id>', methods=['PUT', 'PATCH'])
@protected
def edit_member(member_id):
new_member_data = request.get_json()
name = new_member_data['name']
email = new_member_data['email']
level = new_member_data['level']
db = get_db()
db.execute('update members set name =?, email =?, level=? where id = ?', [name, email, level, member_id])
db.commit()
member_cursor = db.execute('select id, name, email, level from members where id = ?', [member_id])
member = member_cursor.fetchone()
return jsonify({'member': {'id': member['id'], 'name' : member['name'], 'email' : member['email'], 'level' : member['level']}})
@app.route('/member/<int:member_id>', methods=['DELETE'])
@protected
def delete_member(member_id):
db = get_db()
db.execute('delete from members where id = ?',[member_id])
db.commit()
return jsonify({'message' : 'The member has been deleted'})
if __name__ == '__main__':
app.run(debug=True)