private _translateErrorResponse()

in device/transport/amqp/src/amqp_twin_client.ts [395:440]


  private _translateErrorResponse(amqpMessage: AmqpMessage): Error {
    let err: AmqpTransportError;
    let statusCode: number;
    let errorMessage: string = 'Twin operation failed';

    if (amqpMessage.message_annotations) {
      statusCode = amqpMessage.message_annotations.status;
    }

    if (amqpMessage.body) {
      errorMessage = JSON.parse(amqpMessage.body.content);
    }

    switch (statusCode) {
      case 400:
        err = new errors.FormatError(errorMessage);
        break;
      case 401:
        err = new errors.UnauthorizedError(errorMessage);
        break;
      case 403:
        err = new errors.InvalidOperationError(errorMessage);
        break;
      case 404:
        err = new errors.DeviceNotFoundError(errorMessage);
        break;
      case 429:
        err = new errors.ThrottlingError(errorMessage);
        break;
      case 500:
        err = new errors.InternalServerError(errorMessage);
        break;
      case 503:
        err = new errors.ServiceUnavailableError(errorMessage);
        break;
      case 504:
        err = new errors.TimeoutError(errorMessage);
        break;
      default:
        err = new errors.TwinRequestError(errorMessage);
    }

    err.amqpError = <any>amqpMessage;

    return err;
  }