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.')
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.')
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
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))
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
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
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
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
def all_autos(request): log.trace("Listing cars for {}".format(request.api_user.name)) cars = Repository.all_cars(limit=25) return cars