mirror of
https://github.com/tdurieux/anonymous_github.git
synced 2026-02-13 19:02:45 +00:00
54 lines
1.4 KiB
TypeScript
54 lines
1.4 KiB
TypeScript
import { CustomError } from "ts-custom-error";
|
|
import AnonymizedFile from "./AnonymizedFile";
|
|
import Repository from "./Repository";
|
|
import GitHubBase from "./source/GitHubBase";
|
|
import { GitHubRepository } from "./source/GitHubRepository";
|
|
import User from "./User";
|
|
|
|
/**
|
|
* Custom error message
|
|
*/
|
|
export default class AnonymousError extends CustomError {
|
|
value?: any;
|
|
httpStatus?: number;
|
|
cause?: Error;
|
|
|
|
constructor(
|
|
message: string,
|
|
opt?: {
|
|
httpStatus?: number;
|
|
cause?: Error;
|
|
object?: any;
|
|
}
|
|
) {
|
|
super(message);
|
|
this.value = opt?.object;
|
|
this.httpStatus = opt?.httpStatus;
|
|
this.cause = opt?.cause;
|
|
}
|
|
|
|
toString(): string {
|
|
let out = "";
|
|
let detail = this.value ? JSON.stringify(this.value) : null;
|
|
if (this.value instanceof Repository) {
|
|
detail = this.value.repoId;
|
|
} else if (this.value instanceof AnonymizedFile) {
|
|
detail = `/r/${this.value.repository.repoId}/${this.value.anonymizedPath}`;
|
|
} else if (this.value instanceof GitHubRepository) {
|
|
detail = `${this.value.fullName}`;
|
|
} else if (this.value instanceof User) {
|
|
detail = `${this.value.username}`;
|
|
} else if (this.value instanceof GitHubBase) {
|
|
detail = `${this.value.repository.repoId}`;
|
|
}
|
|
out += this.message;
|
|
if (detail) {
|
|
out += `: ${detail}`;
|
|
}
|
|
if (this.cause) {
|
|
out += `\n\tCause by ${this.cause}\n${this.cause.stack}`;
|
|
}
|
|
return out;
|
|
}
|
|
}
|