Beispiel #1
0
def get_card_details(card_id):
    try:
        card = card_presenter.get_card_details(card_id)
        return make_response(jsonify(card), 200)
    except InvalidIdError:
        return make_error_response("Card ID is invalid", 400)
    except NotFoundError:
        return make_error_response("Card could not be found", 404)
Beispiel #2
0
def delete_note_from_deck(deck_id, note_id):
    token = request.headers["Authorization"]
    token_data = jwt.decode(token, config.JWT_SECRET)
    try:
        note_presenter.delete_note_from_deck(deck_id, note_id,
                                             token_data["username"])
        return make_response(jsonify({}), 200)
    except InvalidIdError as err:
        return make_error_response("{}".format(err), 400)
    except InvalidAccessError:
        return make_error_response("You are not the owner of that deck", 401)
    except NotFoundError as err:
        return make_error_response("{}".format(err), 404)
Beispiel #3
0
def get_specific_deck(deck_id):
    token = request.headers["Authorization"]
    token_data = jwt.decode(token, config.JWT_SECRET)

    try:
        deck = deck_presenter.get_deck_details(deck_id, token_data["username"])
        return make_response(jsonify(deck), 200)
    except InvalidAccessError:
        return make_error_response("You are not the owner of that deck", 401)
    except InvalidIdError:
        return make_error_response("Invalid ID", 400)
    except NotFoundError:
        return make_error_response("Deck could not be found", 404)
Beispiel #4
0
def search_cards():
    if request.args.get("query"):
        search_term = str(request.args.get("query"))
        try:
            page_num = get_page_number(request)
            page_size = get_page_size(request)
            search_result = card_presenter.search_by_name(
                search_term, page_num, page_size)
            return make_paginated_response(search_result["data"], page_num,
                                           page_size, search_result["count"],
                                           200)
        except ValueError as err:
            return make_error_response("{}".format(err), 400)
    else:
        return make_error_response("No query parameter supplied", 400)
Beispiel #5
0
def create_new_deck():
    request_data = request.get_json()
    token = request.headers["Authorization"]
    token_data = jwt.decode(token, config.JWT_SECRET)
    if "deckName" in request_data:
        try:
            result = deck_presenter.create_deck(token_data["username"],
                                                request_data["deckName"])
            return make_response(jsonify(result), 201)
        except InvalidDataError:
            return make_error_response("deckName must not be empty", 400)
        except Exception as err:
            return make_error_response("{}".format(err), 500)
    else:
        return make_error_response("deckName must be in body", 400)
Beispiel #6
0
def get_current_user():
    token = request.headers["Authorization"]
    data = jwt.decode(token, config.JWT_SECRET)
    try:
        user = user_presenter.get_user_details(data["username"])
        return make_response(user, 200)
    except NotFoundError:
        return make_error_response("User could not be found", 404)
Beispiel #7
0
def login():
    login_info = request.get_json()
    try:
        token = auth_presenter.login(login_info["username"],
                                     login_info["password"])
        return make_response({"token": token.decode("UTF-8")}, 200)
    except Exception as err:
        print(err)
        return make_error_response("Invalid username or password", 401)
Beispiel #8
0
def update_user():
    token = request.headers["Authorization"]
    token_data = jwt.decode(token, config.JWT_SECRET)

    login_info = request.get_json()
    if "givenName" in login_info and "familyName" in login_info:
        try:
            result = user_presenter.update_user(token_data["username"],
                                                login_info["givenName"],
                                                login_info["familyName"])
            return make_response(jsonify(result), 200)
        except InvalidDataError:
            return make_error_response("All fields must contain a value", 400)
        except Exception as err:
            return make_error_response("{}".format(err), 500)
    else:
        return make_error_response("givenName, and familyName must be in body",
                                   400)
Beispiel #9
0
def register_new_user():
    login_info = request.get_json()
    if ("username" in login_info and "givenName" in login_info
            and "familyName" in login_info and "password" in login_info):
        try:
            result = user_presenter.create_user(
                login_info["username"],
                login_info["givenName"],
                login_info["familyName"],
                login_info["password"],
            )
            return make_response(jsonify(result), 201)
        except AlreadyExistsError as err:
            return make_error_response("{}".format(err), 400)
        except Exception as err:
            return make_error_response("{}".format(err), 500)
    else:
        return make_error_response(
            "Username, passsword, givenName, and familyName must be in body",
            400)
Beispiel #10
0
def get_users_decks():
    token = request.headers["Authorization"]
    token_data = jwt.decode(token, config.JWT_SECRET)
    try:
        page_num = get_page_number(request)
        page_size = get_page_size(request)
        result = deck_presenter.get_user_decks(token_data["username"],
                                               page_num, page_size)
        return make_paginated_response(result["data"], page_num, page_size,
                                       result["count"], 200)
    except ValueError as err:
        return make_error_response("{}".format(err), 400)
Beispiel #11
0
def update_note_in_deck(deck_id, note_id):
    request_data = request.get_json()
    token = request.headers["Authorization"]
    token_data = jwt.decode(token, config.JWT_SECRET)
    if "note" in request_data:
        try:
            result = note_presenter.update_note_in_deck(
                deck_id, note_id, request_data["note"], token_data["username"])
            return make_response(jsonify(result), 200)
        except NotFoundError as err:
            return make_error_response("{}".format(err), 404)
        except InvalidAccessError:
            return make_error_response("You are not the owner of that deck",
                                       401)
        except InvalidIdError:
            return make_error_response("Invalid deck ID", 400)
        except InvalidDataError:
            return make_error_response("All fields must have a value", 400)
        except Exception as err:
            return make_error_response("{}".format(err), 500)
    else:
        return make_error_response("note must be in body", 400)
Beispiel #12
0
def logout():
    if "Authorization" in request.headers:
        auth_presenter.logout(request.headers["Authorization"])
        return make_response(jsonify({"message": "Logout Successful"}), 200)
    else:
        return make_error_response("Token is missing", 401)