示例#1
0
def get_reservation_data(api: Api):
    """API Request: Get Details of Reservation History"""
    if not check_auth(request.headers):
        api.abort(401, "Invalid Token")
        return
    res = accounting_client.fetch_reservation_data(request.headers["X-Token"])
    return {"reservations": res}, 200
示例#2
0
def user_login(api: Api):
    """API Request: User Login"""
    login_result = auth_client.login(api.payload["email"],
                                     api.payload["password"])
    if "token" in login_result:
        return {'token': login_result["token"]}, 200
    api.abort(422, "Invalid Credentials")
示例#3
0
 def put(self, id):
     '''Update a task given its identifier'''
     print(id, api.payload)
     res = DAO.update(id, api.payload)
     if res == "Failure":
         Api.abort(400)
     else:
         return res
示例#4
0
def get_lot_info(api: Api, lot_id: int):
    """API Request: Get Details of an specific Parking Lot"""
    if not check_auth(request.headers):
        api.abort(401, "Invalid Token")
    lot = geo_client.get_lot(lot_id)  # type: ParkingLot
    if lot is not None:
        return lot.get_data_dict(), 200
    else:
        api.abort(422, 'lot_id not found')
示例#5
0
def cancel_reservation(api: Api, reservation_id):
    """API Request: Cancel Reservation"""
    if not check_auth(request.headers):
        api.abort(401, "Invalid Token")
    if accounting_client.cancel_reservation(request.headers["X-Token"],
                                            reservation_id):
        return {"status": True}, 200
    else:
        api.abort(422, "Invalid Arguments")
示例#6
0
def user_signup(api: Api):
    """API Request: User Sign Up"""
    try:
        sign_up_result = accounting_client.sign_up(api.payload)
    except NotFoundException as ex:
        api.abort(500, "Created user not found")
    if "token" in sign_up_result:
        return {"token": sign_up_result["token"]}, 200
    else:
        api.abort(422, "User already exists")
示例#7
0
def fetch_reservation(api: Api, reservation_id):
    """API Request: Get Details for a specific Reservation"""
    if not check_auth(request.headers):
        api.abort(401, "Invalid Token")
    result = accounting_client.fetch_reservation_data_for_id(
        request.headers["X-Token"], reservation_id)
    if result:
        return result, 200
    else:
        api.abort(422, "Invalid Arguments")
示例#8
0
def get_nearby_parkinglots(api: Api):
    """API Request: Find available parking lot in a nearby radius"""
    if not check_auth(request.headers):
        api.abort(401, "Invalid Token")
        return
    lots = geo_client.find_near_parking_lots(
        api.payload['location']['lon'],
        api.payload['location']['lat'],
        api.payload['radius'],
        lot_type=api.payload.get('type', None))  # type: list[ParkingLot]
    lots = [x.get_data_dict() for x in lots]
    return {'found_lots': len(lots), 'lots': lots}, 200
示例#9
0
def user_info_set(api: Api):
    """API Request: Update User account details"""
    if not check_auth(request.headers):
        api.abort(401, "Invalid Token")
        return
    status = accounting_client.update_user_data(request.headers["X-Token"],
                                                api.payload, 'join'
                                                in request.args)
    if "status" not in status or not status["status"]:
        api.abort(401, "Invalid Token or arguments")
        return
    return {'message': 'Success'}, 200
示例#10
0
def begin_parking(api: Api, reservation_id):
    """API Request: State the presence at the parking spot and request barrier opening"""
    if not check_auth(request.headers):
        api.abort(401, "Invalid Token")
    result = accounting_client.begin_parking(request.headers["X-Token"],
                                             reservation_id)

    if result:
        # FOR DEMO
        duration = randint(200, 400)
        accounting_client.delayed_call('end_parking', duration * 1000,
                                       reservation_id, duration)

        return {"status": True}, 200
    else:
        api.abort(422, "Invalid Arguments")
示例#11
0
def reserve_parking_spot(api: Api):
    """API Request: Reserve a (free) parking spot"""
    if not check_auth(request.headers):
        api.abort(401, "Invalid Token")
        return
    try:
        res = accounting_client.reserve_parking_spot(
            request.headers["X-Token"], api.payload['lot_id'],
            api.payload['type'])
        if res is not None:
            return res, 201
        else:
            api.abort(409, 'Denied')
    except HTTPException as ex:
        raise
    except FullException as ex:
        api.abort(422, "Lot is full")
    except BaseException as ex:
        api.abort(500, ex.__class__.__name__)
示例#12
0
def user_status_get(api: Api, ufilter):
    """API Request: User Sign Up"""
    if not check_auth(request.headers):
        api.abort(401, "Invalid Token")
        return
    user_result = accounting_client.fetch_user_data(request.headers["X-Token"])
    if "status" not in user_result or not user_result["status"]:
        api.abort(401, "Invalid Token")
        return
    if "user" in user_result and ufilter in user_result["user"]:
        return {'info': {ufilter: user_result["user"][ufilter]}}, 200
    api.abort(
        500,
        "We apologize for having really bad behaving servers. Please try again later."
    )
    return
示例#13
0
def user_info_get(api: Api):
    """API Request: get User info"""
    if not check_auth(request.headers):
        api.abort(401, "Invalid Token")
        return
    user_result = accounting_client.fetch_user_data(request.headers["X-Token"])
    if "status" not in user_result or not user_result["status"]:
        api.abort(401, "Invalid Token")
        return
    if "user" in user_result:
        return user_result["user"], 200
    api.abort(
        500,
        "We apologize for having really bad behaving servers. Please try again later."
    )
    return
示例#14
0
    columns_to_drop = ['Edition Statement',
                       'Corporate Author',
                       'Corporate Contributors',
                       'Former owner',
                       'Engraver',
"~/COMP9321-Data-Services/Week5_Flask/activity_1.py" 48L, 1404Cfrom flask_restplus import Resource, Api

app = Flask(__name__)
api = Api(app)


@api.route('/books/<int:id>')
class Books(Resource):
    def get(self, id):
        if id not in df.index:
            api.abort(404, "Book {} doesn't exist".format(id))

        book = dict(df.loc[id])
        return book


if __name__ == '__main__':
    columns_to_drop = ['Edition Statement',
                       'Corporate Author',
                       'Corporate Contributors',
                       'Former owner',
                       'Engraver',
"~/COMP9321-Data-Services/Week5_Flask/activity_1.py" 48L, 1404Cimport pandas as pd
-- INSERT --import pandas as pd
from flask import Flask
from flask_restplus import Resource, Api
示例#15
0
 def get(self, id):
     '''Fetch a given resource'''
     for i in DAO.todos[0]:
         if i['id'] == id:
             return i
     return Api.abort(404)