in device/transport/http/src/http_errors.ts [25:69]
export function translateError(message: string, body: any, response: IncomingMessage): HttpTransportError {
let error: HttpTransportError;
switch (response.statusCode) {
case 400:
/*Codes_SRS_NODE_DEVICE_HTTP_ERRORS_16_003: [`translateError` shall return an `ArgumentError` if the HTTP response status code is `400`.]*/
error = new errors.ArgumentError(message);
break;
case 401:
/*Codes_SRS_NODE_DEVICE_HTTP_ERRORS_16_004: [`translateError` shall return an `UnauthorizedError` if the HTTP response status code is `401`.]*/
error = new errors.UnauthorizedError(message);
break;
case 403:
/*Codes_SRS_NODE_DEVICE_HTTP_ERRORS_16_005: [`translateError` shall return an `IotHubQuotaExceededError` if the HTTP response status code is `403`.]*/
error = new errors.IotHubQuotaExceededError(message);
break;
case 404:
/*Codes_SRS_NODE_DEVICE_HTTP_ERRORS_16_006: [`translateError` shall return an `DeviceNotFoundError` if the HTTP response status code is `404`.]*/
error = new errors.DeviceNotFoundError(message);
break;
case 413:
/*Codes_SRS_NODE_DEVICE_HTTP_ERRORS_16_007: [`translateError` shall return an `MessageTooLargeError` if the HTTP response status code is `413`.]*/
error = new errors.MessageTooLargeError(message);
break;
case 500:
/*Codes_SRS_NODE_DEVICE_HTTP_ERRORS_16_008: [`translateError` shall return an `InternalServerError` if the HTTP response status code is `500`.]*/
error = new errors.InternalServerError(message);
break;
case 503:
/*Codes_SRS_NODE_DEVICE_HTTP_ERRORS_16_009: [`translateError` shall return an `ServiceUnavailableError` if the HTTP response status code is `503`.]*/
error = new errors.ServiceUnavailableError(message);
break;
default:
/*Codes_SRS_NODE_DEVICE_HTTP_ERRORS_16_002: [If the HTTP error code is unknown, `translateError` should return a generic Javascript `Error` object.]*/
error = new Error(message);
}
/* Codes_SRS_NODE_DEVICE_HTTP_ERRORS_16_001: [Any error object returned by `translateError` shall inherit from the generic `Error` Javascript object and have 3 properties:
* - `response` shall contain the `IncomingMessage` object returned by the HTTP layer.
* - `responseBody` shall contain the content of the HTTP response.
* - `message` shall contain a human-readable error message]
*/
error.response = response;
error.responseBody = body;
return error;
}