Example #1
0
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',        
    }
Example #2
0
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',        
    }
Example #3
0
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',        
    }
Example #4
0
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
Example #5
0
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
Example #6
0
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
Example #7
0
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)
    }
Example #8
0
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)
    }
Example #9
0
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',
    }