def get_particular_entry(id): access_token = request.headers.get('Authorization', '')[len('Bearer '):] if not db.access_token(access=access_token) or db.access_token(access=access_token)[0]['expire_time'] < datetime.now(): return '', 401 user_id = db.access_token(access=access_token)[0]['user_id'] try: id = int(id) if id not in db.entrylist: raise Exception() except: return '', 404 entrylist = db.entrylist[id] if int(entrylist['user_id']) != user_id: return '', 404 return json.dumps({ 'id': entrylist['__id__'], 'name': entrylist['name'], 'rclass': entrylist['rclass'], }, indent=4), 200, { 'Content-Type': 'application/json;charset=UTF-8', }
def get_me(): access_token = request.headers.get('Authorization', '')[len('Bearer '):] print ('--', access_token) if not db.access_token(access=access_token) or db.access_token(access=access_token)[0]['expire_time'] < datetime.now(): return '', 403 user_id = db.access_token(access=access_token)[0]['user_id'] return json.dumps({ 'login': db.user_base[user_id]['login'], 'name': db.user_base[user_id]['name'], 'email': db.user_base[user_id]['email'], }, indent=4), 200, { 'Content-Type': 'application/json;charset=UTF-8', }
def get_entrylist(): access_token = request.headers.get('Authorization', '')[len('Bearer '):] if not db.access_token(access=access_token) or db.access_token(access=access_token)[0]['expire_time'] < datetime.now(): return '', 401 user_id = db.access_token(access=access_token)[0]['user_id'] print (user_id) try: per_page = int(request.args.get('per_page')) print (per_page) if per_page < 0 or per_page > 100: raise Exception() page = int(request.args.get('page')) print (page, len(db.entrylist(user_id=user_id))) if page < 0 or page > len(db.entrylist) // per_page: raise Exception() except: return '', 400 items = [] for i, entrylist in enumerate(db.entrylist): if i < page * per_page: continue if i >= (page + 1) * per_page: break if int(entrylist['user_id']) != 0: print ('*!=0*') continue items.append({ 'id': entrylist['__id__'], 'user_id': entrylist['user_id'], 'name': entrylist['name'], 'rclass': entrylist['rclass'], }) return json.dumps({ 'items': items, 'per_page': per_page, 'page': page, 'page_count': math.ceil(len(db.entrylist) / per_page) }, indent=4), 200, { 'Content-Type': 'application/json;charset=UTF-8', }
def delete_entry_item(id): access_token = request.headers.get('Authorization', '')[len('Bearer '):] if not db.access_token(access=access_token) or db.access_token(access=access_token)[0]['expire_time'] < datetime.now(): return '', 401 user_id = db.access_token(access=access_token)[0]['user_id'] try: id = int(id) if id not in db.entrylist or db.entrylist[id]['user_id'] != user_id: raise Exception() except: return '', 404 db.entrylist.delete(db.entrylist[id]) db.entrylist.commit() return '', 200
def put_entry_item(id): access_token = request.headers.get('Authorization', '')[len('Bearer '):] if not db.access_token(access=access_token) or db.access_token(access=access_token)[0]['expire_time'] < datetime.now(): return '', 401 user_id = db.access_token(access=access_token)[0]['user_id'] try: id = int(id) print ('id= ', id) if id not in db.entrylist: # or db.entrylist[id]['user_id'] != user_id: raise Exception() records = enumerate(db.entrylist) for i, rec in records: if (i == id): if (int(rec['user_id']) != user_id): raise Exception() except: return '', 404 try: entrylist = request.get_json(force=True) count = 0 records = enumerate(db.races_base) for rec in records: if rec[1]['name'] != entrylist['name']: count = count + 1 if count >= len(db.races_base): raise Exception() except: return '', 400 print (entrylist['rclass']) print (entrylist['name']) db.entrylist.update(db.entrylist[id], name=entrylist['name'], rclass=entrylist['rclass']) db.entrylist.commit() return '', 200
def put_claim_item(id): access_token = request.headers.get('Authorization', '')[len('Bearer '):] if not db.access_token(access=access_token) or db.access_token(access=access_token)[0]['expire_time'] < datetime.now(): return '', 401 user_id = db.access_token(access=access_token)[0]['user_id'] try: id = int(id) print 'id= ', id if id not in db.claim: # or db.claim[id]['user_id'] != user_id: raise Exception() records = enumerate(db.claim) for i, rec in records: if (i == id): if (int(rec['user_id']) != user_id): raise Exception() except: return '', 404 try: claim = request.get_json(force=True) count = 0 records = enumerate(db.course_base) for rec in records: if rec[1]['name'] != claim['name']: count = count + 1 if count >= len(db.course_base): raise Exception() except: return '', 400 print claim['capacity'] print claim['name'] db.claim.update(db.claim[id], name=claim['name'], capacity=claim['capacity']) db.claim.commit() return '', 200
def post_entry(): access_token = request.headers.get('Authorization', '')[len('Bearer '):] if not db.access_token(access=access_token) or db.access_token(access=access_token)[0]['expire_time'] < datetime.now(): return '', 401 user_id = db.access_token(access=access_token)[0]['user_id'] try: entrylist = request.get_json(force=True) #for event in entrylist['event']: #print (entrylist['event']['id']) #if event['id'] not in db.event: count = 0 records = enumerate(db.races_base) for rec in records: if rec[1]['name'] != entrylist['name']: count = count + 1 if count >= len(db.races_base): raise Exception() except: return '', 400 print (entrylist['rclass']) print (entrylist['name']) id = db.entrylist.insert(user_id=user_id, name=entrylist['name'], rclass=entrylist['rclass']) db.entrylist.commit() return '', 201, { 'Location': '/entrylist/{}'.format(id) }
def post_claims(): access_token = request.headers.get('Authorization', '')[len('Bearer '):] if not db.access_token(access=access_token) or db.access_token(access=access_token)[0]['expire_time'] < datetime.now(): return '', 401 user_id = db.access_token(access=access_token)[0]['user_id'] try: claim = request.get_json(force=True) #for event in claim['event']: #print claim['event']['id'] #if event['id'] not in db.event: count = 0 records = enumerate(db.course_base) for rec in records: if rec[1]['name'] != claim['name']: count = count + 1 if count >= len(db.course_base): raise Exception() except: return '', 400 print claim['capacity'] print claim['name'] id = db.claim.insert(user_id=user_id, name=claim['name'], capacity=claim['capacity']) db.claim.commit() return '', 201, { 'Location': '/claims/{}'.format(id) }
def token(): try: grant_type = request.form.get('grant_type') client_id = request.form.get('client_id') client_secret = request.form.get('client_secret') except KeyError: return json.dumps({'error': 'invalid_request'}), 400, { 'Content-Type': 'application/json;charset=UTF-8', } try: client_id = int(client_id) except: client_id = None if client_id not in db.client_base or db.client_base[client_id]['secret'] != client_secret: return json.dumps({'error': 'invalid_client'}), 400, { 'Content-Type': 'application/json;charset=UTF-8', } if grant_type == 'authorization_code': try: code = request.form.get('code') except KeyError: return json.dumps({'error': 'invalid_request'}), 400, { 'Content-Type': 'application/json;charset=UTF-8', } if not db.authorization_code(code=code) or db.authorization_code(code=code)[0]['expire_time'] < datetime.now(): return json.dumps({'error': 'invalid_grant'}), 400, { 'Content-Type': 'application/json;charset=UTF-8', } user_id = db.authorization_code(code=code)[0]['user_id'] db.authorization_code.delete(db.authorization_code(code=code)) db.authorization_code.commit() elif grant_type == 'refresh_token': try: refresh_token = request.form.get('refresh_token') except KeyError: return json.dumps({'error': 'invalid_request'}), 400, { 'Content-Type': 'application/json;charset=UTF-8', } if not db.access_token(refresh=refresh_token): return json.dumps({'error': 'invalid_grant'}), 400, { 'Content-Type': 'application/json;charset=UTF-8', } user_id = db.access_token(refresh=refresh_token)[0]['user_id'] db.access_token.delete(db.access_token(refresh=refresh_token)) db.access_token.commit() else: return json.dumps({'error': 'unsupported_grant_type'}), 400, { 'Content-Type': 'application/json;charset=UTF-8', } access_token = sha256(str(uuid4()).encode('UTF-8')).hexdigest() expire_time = datetime.now() + timedelta(hours=1) refresh_token = sha256(str(uuid4()).encode('UTF-8')).hexdigest() db.access_token.insert(user_id=user_id, access=access_token, expire_time=expire_time, refresh=refresh_token) db.access_token.commit() return json.dumps({ 'access_token': access_token, 'token_type': 'bearer', 'expires_in': 3600, 'refresh_token': refresh_token, }), 200, { 'Content-Type': 'application/json;charset=UTF-8', 'Cache-Control': 'no-store', 'Pragma': 'no-cache', }