Пример #1
0
def update_auto(request: Request):
    car_id = request.matchdict.get('car_id')
    car = Repository.car_by_id(car_id)
    if car_id == '__first__':
        car_id = Repository.all_cars()[0].id

    if not car:
        msg = "The car with id '{}' was not found.".format(car_id)
        return Response(status=404, json_body={'error': msg})

    try:
        car_data = request.json_body
    except:
        return Response(status=400, body='Could not parse your post as JSON.')

    vm = UpdateAutoViewModel(car_data, car_id)
    vm.compute_details()
    if vm.errors:
        return Response(status=400, body=vm.error_msg)

    try:
        Repository.update_car(vm.car)
        return Response(status=204, body='Car updated successfully.')
    except:
        return Response(status=400, body='Could not update car.')
Пример #2
0
def single_auto(request: Request):
    car_id = request.matchdict.get('car_id')
    if car_id == '__first__':
        car_id = Repository.all_cars()[0].id

    car = Repository.car_by_id(car_id)
    if not car:
        msg = "The car with id '{}' was not found.".format(car_id)
        return Response(status=404, json_body={'error': msg})

    return car
def delete_auto(request: Request):
    car_id = request.matchdict.get('car_id')
    car = Repository.car_by_id(car_id)
    if not car:
        msg = "The car with id '{}' was not found.".format(car_id)
        return Response(status=404, json_body={'error': msg})

    try:
        Repository.delete_car(car_id)
        return Response(status=204, body='Car deleted successfully.')
    except:
        return Response(status=400, body='Could not update car.')
Пример #4
0
def single_auto(request: Request):
    car_id = request.matchdict.get('car_id')
    log.trace("Car details for car {} and user {}".format(
        car_id, request.api_user.name))
    if car_id == '__first__':
        car_id = Repository.all_cars()[0].id

    car = Repository.car_by_id(car_id)
    if not car:
        msg = "The car with id '{}' was not found.".format(car_id)
        return Response(status=404, json_body={'error': msg})

    return car
Пример #5
0
def create_auto(request: Request):
    log.info("The user {} is creating a car".format(request.api_user.name))

    try:
        car_data = request.json_body
    except Exception as x:
        log.warn("The submitted JSON body couldn't be parsed for {}".format(
            request.api_user.name))
        return Response(status=400,
                        body='Could not parse your post as JSON.' + str(x))

    vm = CreateAutoViewModel(car_data)
    vm.compute_details()
    if vm.errors:
        log.warn("The submitted invalid car by {}, reasons: {}".format(
            request.api_user.name, '; '.join(vm.errors)))
        return Response(status=400, body=vm.error_msg)

    try:
        car = Repository.add_car(vm.car)
        log.info("{} has successfully created car {}".format(
            request.api_user.name, car.id))
        return Response(status=201, json_body=car.to_dict())
    except Exception as x:
        log.error("Failed to save car: {}".format(x))
        return Response(status=500, body='Could not save car. ' + str(x))
def update_auto(request: Request):
    car_id = request.matchdict.get('car_id')
    car = Repository.car_by_id(car_id)

    if not car:
        msg = "The car with id '{}' was not found.".format(car_id)
        return Response(status=404, json_body={'error': msg})

    try:
        car_data = request.json_body
    except:
        return Response(status=400, body='Could not parse your post as JSON.')

    # TODO: Validate

    try:
        Repository.update_car(car_data)
        return Response(status=204, body='Car updated successfully.')
    except:
        return Response(status=400, body='Could not update car.')
def create_auto(request: Request):
    try:
        car_data = request.json_body
    except:
        return Response(status=400, body='Could not parse your post as JSON.')

    # TODO: Validate

    try:
        car_data = Repository.add_car(car_data)
        return Response(status=201, json_body=car_data)
    except:
        return Response(status=400, body='Could not save car.')
def create_auto(request: Request):
    try:
        car_data = request.json_body
        car = Car.from_dict(car_data)
    except:
        return Response(status=400, body='Could not parse your post as JSON.')

    # TODO: Validate

    try:
        car = Repository.add_car(car)
        return Response(status=201, json_body=car.to_dict())
    except Exception as x:
        return Response(status=400, body='Could not save car: {}'.format(x))
Пример #9
0
def parse_api_key(request):
    auth_header = request.headers.get("Authorization")
    if not auth_header:
        return None, "No auth header!"

    parts = auth_header.split(':')
    if len(parts) != 2 or parts[0].strip() != 'api-key':
        return None, "Invalid auth header!"

    api_key = parts[1].strip()
    user = Repository.find_user_by_api_key(api_key)
    if not user:
        return None, "Invalid API Key."

    return user, None
Пример #10
0
def parse_api_key(request):
    auth_header = request.headers.get('Authorization')
    if not auth_header:
        return None, "You must specify an Authorization header."

    parts = auth_header.split(':')
    if len(parts) != 2 or parts[0].strip() != 'api-key':
        return None, "Invalid auth header"

    api_key = parts[1].strip()
    user = Repository.find_user_by_api_key(api_key)
    if not user:
        return None, "Invalid API Key, no user with this account."

    return user, None
Пример #11
0
def create_auto(request: Request):
    try:
        car_data = request.json_body
    except Exception as x:
        return Response(status=400, body='Could not parse your post as JSON.' + str(x))

    vm = CreateAutoViewModel(car_data)
    vm.compute_details()
    if vm.errors:
        return Response(status=400, body=vm.error_msg)

    try:
        car = Repository.add_car(vm.car)
        return Response(status=201, json_body=car.to_dict())
    except Exception as x:
        return Response(status=500, body='Could not save car. ' + str(x))
def all_autos(_):
    cars = Repository.all_cars(limit=25)
    return cars
Пример #13
0
def all_autos_csv(_):
    cars = Repository.all_cars(limit=25)
    # return [car.to_dict() for car in cars]
    # return [(1, 1), (2, 1)]
    return cars
Пример #14
0
def all_autos(request):
    log.trace("Listing cars for {}".format(request.api_user.name))
    cars = Repository.all_cars(limit=25)
    return cars