@ -1,28 +0,0 @@ | |||||
import os | |||||
import json | |||||
import hashlib | |||||
from flask import Flask, request | |||||
from flask_restful import Resource, Api, abort | |||||
app = Flask(__name__) | |||||
api = Api(app) | |||||
with open(os.path.join(app.root_path, 'userdata.json'), 'r') as f: | |||||
data = json.load(f) | |||||
class Login( Resource ): | |||||
def post(self): | |||||
req = request.args | |||||
print(req) | |||||
if __name__ == '__main__': | |||||
api.add_resource(Login, '/login', '/login/') | |||||
app.run(host='0.0.0.0', port=5000) |
@ -1,3 +0,0 @@ | |||||
{ | |||||
} |
@ -0,0 +1,84 @@ | |||||
import os | |||||
import json | |||||
from . import utils | |||||
from flask import Flask, request | |||||
from flask_restful import Resource, Api, abort | |||||
app = Flask(__name__) | |||||
api = Api(app) | |||||
db_path = os.path.join(app.root_path, 'databases', 'users.json') | |||||
with open(db_path, 'r') as f: | |||||
users = json.load(f) | |||||
class Users(Resource): | |||||
def post(self): | |||||
""" | |||||
Example POST Data: | |||||
username=<username>& | |||||
password=<password>& | |||||
realname=<realname>& # OPTIONAL | |||||
avatar=<avatar_url>& # OPTIONAL | |||||
""" | |||||
args = request.form | |||||
user_id = utils.generate_id() | |||||
user = { | |||||
'id': user_id, | |||||
'username': args['username'], | |||||
'realname': args.get('realname'), | |||||
'avatar' : args.get('avatar'), | |||||
'password': utils.md5(args['password']), | |||||
'stats': { | |||||
'bus_usage_week': 0, | |||||
'bus_usage_month': 0, | |||||
'bus_usage_year': 0 | |||||
}, | |||||
'points': 0 | |||||
} | |||||
users.append(user) | |||||
with open(db_path, 'w') as f: | |||||
json.dump(users, f, indent=4) | |||||
return user | |||||
class User(Resource): | |||||
def get(self, user_id): | |||||
try: | |||||
user = utils.find_by_id(users, user_id) | |||||
if not user: | |||||
raise Exception('User not found!') | |||||
del user['password'] | |||||
return user | |||||
except: | |||||
abort(404, error="User {} doesn't exist".format(user_id)) | |||||
class Login(Resource): | |||||
def post(self): | |||||
""" | |||||
Example POST Data: | |||||
username=<username>& | |||||
password=<password> | |||||
""" | |||||
args = request.form | |||||
print(args) | |||||
username = args['username'] | |||||
passsword = utils.md5(args['password']) | |||||
for user in users: | |||||
if user['username'] == username: | |||||
if user['password'] == passsword: | |||||
return {'message': 'Login successful!', 'id': user['id']} | |||||
return {'error': 'Wrong password!'} | |||||
return {'error': 'User not found!'} | |||||
if __name__ == '__main__': | |||||
api.add_resource(Users, '/users', '/users/') | |||||
api.add_resource(User, '/users/<path:user_id>', '/users/<path:user_id>/') | |||||
api.add_resource(Login, '/login', '/login/') | |||||
app.run(host='0.0.0.0', port=5000) |
@ -0,0 +1,16 @@ | |||||
import string | |||||
import random | |||||
import hashlib | |||||
def md5(s): | |||||
return hashlib.md5(s.encode()).hexdigest() | |||||
def find_by_id(iterable, _id): | |||||
for i in iterable: | |||||
if i['id'] == _id: | |||||
return i | |||||
return None | |||||
def generate_id(length=32): | |||||
return ''.join(random.choices(string.ascii_lowercase + string.digits, k=length)) |
@ -1,64 +0,0 @@ | |||||
import os | |||||
import json | |||||
from flask import Flask, request | |||||
from flask_restful import Resource, Api, abort | |||||
app = Flask(__name__) | |||||
api = Api(app) | |||||
with open(os.path.join(app.root_path, 'users.json'), 'r') as f: | |||||
users = json.load(f) | |||||
class Users(Resource): | |||||
def get(self): | |||||
user = [ | |||||
{ | |||||
'id' : v['id'], | |||||
'username': v['username'] | |||||
} | |||||
for v in users | |||||
] | |||||
return user | |||||
def post(self): | |||||
""" | |||||
Example POST Data: | |||||
username=<username>& | |||||
realname=<realname>& # OPTIONAL | |||||
avatar=<avatar_url>& # OPTIONAL | |||||
""" | |||||
args = request.form | |||||
user_id = len(users) + 1 | |||||
user = { | |||||
'id': user_id, | |||||
'username': args['username'], | |||||
'realname': args.get('realname'), | |||||
'avatar' : args.get('avatar'), | |||||
'stats': { | |||||
'bus_usage_week': 0, | |||||
'bus_usage_month': 0, | |||||
'bus_usage_year': 0 | |||||
}, | |||||
'points': 0 | |||||
} | |||||
users.append(user) | |||||
with open(os.path.join(app.root_path, 'users.json'), 'w') as f: | |||||
json.dump(users, f, indent=4) | |||||
return user | |||||
class User(Resource): | |||||
def get(self, user_id): | |||||
try: | |||||
return users[user_id - 1] | |||||
except: | |||||
abort(404, error="User {} doesn't exist".format(voting_id)) | |||||
if __name__ == '__main__': | |||||
api.add_resource(Users, '/users', '/users/') | |||||
api.add_resource(User, '/users/<int:user_id>', '/users/<int:user_id>/') | |||||
app.run(host='0.0.0.0', port=5000) |