function processRequest()

in source/services/vehicle/lib/index.js [53:150]


function processRequest(event, cb) {

    // set the claims ticket
    let _ticket = event.requestContext.authorizer.claims;

    // catch error if proxied API path sent to service is not processed by available logic
    let INVALID_PATH_ERR = {
        Error: ['Invalid path request ', event.resource, ', ', event.httpMethod].join('')
    };

    // instantiate service modules
    let _vehicle = new Vehicle();
    let _dtc = new Dtc();
    let _trip = new Trip();
    let _anomaly = new Anomaly();
    let _healthreport = new HealthReport();
    let _response = '';

    let _body = {};
    let _operation = '';
    if (event.body) {
        _body = JSON.parse(event.body);
    }

    // set logic for proxied API path
    if (event.resource === '/vehicles' && event.httpMethod === 'GET') {
        _operation = 'retrieving vehicles for user';
        _vehicle.listVehicles(_ticket, function(err, data) {
            processResponse(err, data, _operation, event.requestContext.requestId, _ticket['cognito:username'], cb);
        });
    } else if (event.resource === '/vehicles' && event.httpMethod === 'POST') {
        _operation = 'registering vehicle for owner'; // set a description of the operation for logging
        _vehicle.createVehicle(_ticket, _body, function(err, data) {
            processResponse(err, data, _operation, event.requestContext.requestId, _ticket['cognito:username'], cb);
        });
    } else if (event.resource === '/vehicles/{vin}' && event.httpMethod === 'GET') {
        _operation = 'retrieving vehicle for user';
        _vehicle.getVehicle(_ticket, event.pathParameters.vin, function(err, data) {
            processResponse(err, data, _operation, event.requestContext.requestId, _ticket['cognito:username'], cb);
        });
    } else if (event.resource === '/vehicles/{vin}/dtc' && event.httpMethod === 'GET') {
        _operation = 'retrieving dtc records of vehicle for user';
        _dtc.listDtcByVehicle(_ticket, event.pathParameters.vin, function(err, data) {
            processResponse(err, data, _operation, event.requestContext.requestId, _ticket['cognito:username'], cb);
        });
    } else if (event.resource === '/vehicles/{vin}/dtc/{dtc_id}' && event.httpMethod === 'GET') {
        _operation = 'retrieving dtc record of vehicle for user';
        _dtc.getVehicleDtc(_ticket, event.pathParameters.vin, event.pathParameters.dtc_id, function(err, data) {
            processResponse(err, data, _operation, event.requestContext.requestId, _ticket['cognito:username'], cb);
        });
    } else if (event.resource === '/vehicles/{vin}/dtc/{dtc_id}/acknowledge' && event.httpMethod === 'PUT') {
        _operation = 'acknowledge dtc record of vehicle for user';
        _dtc.acknowledgeVehicleDtc(_ticket, event.pathParameters.vin, event.pathParameters.dtc_id, function(err, data) {
            processResponse(err, data, _operation, event.requestContext.requestId, _ticket['cognito:username'], cb);
        });
    } else if (event.resource === '/vehicles/{vin}/anomalies' && event.httpMethod === 'GET') {
        _operation = 'retrieving anomaly records of vehicle for user';
        _anomaly.listAnomaliesByVehicle(_ticket, event.pathParameters.vin, function(err, data) {
            processResponse(err, data, _operation, event.requestContext.requestId, _ticket['cognito:username'], cb);
        });
    } else if (event.resource === '/vehicles/{vin}/anomalies/{anomaly_id}' && event.httpMethod === 'GET') {
        _operation = 'retrieving anomaly record of vehicle for user';
        _anomaly.getVehicleAnomaly(_ticket, event.pathParameters.vin, event.pathParameters.anomaly_id, function(err, data) {
            processResponse(err, data, _operation, event.requestContext.requestId, _ticket['cognito:username'], cb);
        });
    } else if (event.resource === '/vehicles/{vin}/anomalies/{anomaly_id}/acknowledge' && event.httpMethod === 'PUT') {
        _operation = 'acknowledge anomaly record of vehicle for user';
        _anomaly.acknowledgeVehicleAnomaly(_ticket, event.pathParameters.vin, event.pathParameters.anomaly_id, function(err,
            data) {
            processResponse(err, data, _operation, event.requestContext.requestId, _ticket['cognito:username'], cb);
        });
    } else if (event.resource === '/vehicles/{vin}/trips' && event.httpMethod === 'GET') {
        _operation = 'retrieving trip records of vehicle for user';
        _trip.listTripsByVehicle(_ticket, event.pathParameters.vin, function(err, data) {
            processResponse(err, data, _operation, event.requestContext.requestId, _ticket['cognito:username'], cb);
        });
    } else if (event.resource === '/vehicles/{vin}/trips/{trip_id}' && event.httpMethod === 'GET') {
        _operation = 'retrieving trip record of vehicle for user';
        _trip.getVehicleTrip(_ticket, event.pathParameters.vin, event.pathParameters.trip_id, function(err, data) {
            processResponse(err, data, _operation, event.requestContext.requestId, _ticket['cognito:username'], cb);
        });
    } else if (event.resource === '/vehicles/{vin}/healthreports' && event.httpMethod === 'GET') {
        _operation = 'retrieving health report records of vehicle for user';
        _healthreport.listHealthReportsByVehicle(_ticket, event.pathParameters.vin, function(err, data) {
            processResponse(err, data, _operation, event.requestContext.requestId, _ticket['cognito:username'], cb);
        });
    } else if (event.resource === '/vehicles/{vin}/healthreports/{report_id}' && event.httpMethod === 'GET') {
        _operation = 'retrieving health report record of vehicle for user';
        _healthreport.getVehicleHealthReport(_ticket, event.pathParameters.vin, event.pathParameters.report_id, function(err,
            data) {
            processResponse(err, data, _operation, event.requestContext.requestId, _ticket['cognito:username'], cb);
        });
    } else {
        _response = buildOutput(500, INVALID_PATH_ERR);
        return cb(_response, null);
    }

};