import { ICustomError } from "./interface/ICustomError"; import { ErrorType } from "./enum/ErrorType"; import { BaseError } from "./base/BaseError"; import { CustomError } from "./CustomError"; import { AgoraErrorCodes } from "./codes/AgoraErrorCodes"; import { AgoraTypeErrors } from "./enum/AgoraTypeErrors"; import { ErrorTitles } from "./enum/ErrorTitles"; import { AgoraReasonErrors } from "./codes/AgoraReasonErrors"; const parseError = require('parse-error'); export class AgoraError extends BaseError { public type!: ErrorType; public title!: string; public message!: string; public datetime!: number; constructor(type: ErrorType, title : string, message: string){ super(type, title, message); } public static parseCustomError(error : any): Array { let customError : Array = []; let errorCode : Array = []; if(error.message && error.type){ errorCode = AgoraErrorCodes.filter((code)=>{return error.message.indexOf(code) > 0}); } for (let index = 0; index < errorCode.length; index++) { let code : string = errorCode[index]; let codeReason = AgoraReasonErrors.filter((error)=>{return error.code == code}); if(codeReason.length >= 0){ let reason = codeReason[0]; customError.push(new AgoraError(ErrorType.AGORA, reason.notifiable ? ErrorTitles.UserAudioVideoError : ErrorTitles.InternalAudioVideoError, reason.reason)); } } return customError; } }