@nevis-security/nevis-mobile-authentication-sdk-react
Version:
React Native plugin for Nevis Mobile Authentication SDK. Supports only mobile.
103 lines (95 loc) • 3.33 kB
text/typescript
/**
* Copyright © 2024 Nevis Security AG. All rights reserved.
*/
import { DeviceInformationCheckClockSkewTooBigError } from './DeviceInformationCheckClockSkewTooBigError';
import { DeviceInformationCheckDeviceProtectionError } from './DeviceInformationCheckDeviceProtectionError';
import { DeviceInformationCheckError } from './DeviceInformationCheckError';
import { DeviceInformationCheckForbidden } from './DeviceInformationCheckForbidden';
import { DeviceInformationCheckNetworkError } from './DeviceInformationCheckNetworkError';
import { DeviceInformationCheckNoDeviceLockError } from './DeviceInformationCheckNoDeviceLockError';
import { DeviceInformationCheckOperationNotSupportedByBackendError } from './DeviceInformationCheckOperationNotSupportedByBackendError';
import { DeviceInformationCheckUnknownError } from './DeviceInformationCheckUnknownError';
import { ErrorConverter } from '../../ErrorConverter';
enum DeviceInformationCheckErrorType {
ClockSkewTooBig,
DeviceProtectionError,
Forbidden,
NetworkError,
NoDeviceLockError,
OperationNotSupportedByBackend,
Unknown,
}
export class DeviceInformationCheckErrorConverter extends ErrorConverter<DeviceInformationCheckError> {
convert(): DeviceInformationCheckError {
const subtype =
DeviceInformationCheckErrorType[
this.error.type as keyof typeof DeviceInformationCheckErrorType
];
switch (subtype) {
case DeviceInformationCheckErrorType.ClockSkewTooBig:
if (this.error.server) {
return new DeviceInformationCheckClockSkewTooBigError(
this.error.server,
this.error.description,
this.error.cause
);
}
return new DeviceInformationCheckUnknownError(
this.error.description,
this.error.cause
);
case DeviceInformationCheckErrorType.DeviceProtectionError:
return new DeviceInformationCheckDeviceProtectionError(
this.error.description,
this.error.cause
);
case DeviceInformationCheckErrorType.Forbidden:
if (this.error.server) {
return new DeviceInformationCheckForbidden(
this.error.server,
this.error.description,
this.error.cause
);
}
return new DeviceInformationCheckUnknownError(
this.error.description,
this.error.cause
);
case DeviceInformationCheckErrorType.NetworkError:
if (this.error.server) {
return new DeviceInformationCheckNetworkError(
this.error.server,
this.error.description,
this.error.cause
);
}
return new DeviceInformationCheckUnknownError(
this.error.description,
this.error.cause
);
case DeviceInformationCheckErrorType.NoDeviceLockError:
return new DeviceInformationCheckNoDeviceLockError(
this.error.description,
this.error.cause
);
case DeviceInformationCheckErrorType.OperationNotSupportedByBackend:
if (this.error.server) {
return new DeviceInformationCheckOperationNotSupportedByBackendError(
this.error.server,
this.error.description,
this.error.cause
);
}
return new DeviceInformationCheckUnknownError(
this.error.description,
this.error.cause
);
case DeviceInformationCheckErrorType.Unknown:
return new DeviceInformationCheckUnknownError(
this.error.description,
this.error.cause,
this.error.server
);
}
}
}