Add verification and value stripping
This commit is contained in:
43
templates/ts_base.ts
Normal file
43
templates/ts_base.ts
Normal file
@ -0,0 +1,43 @@
|
||||
export class VerificationError extends Error {
|
||||
constructor(
|
||||
public readonly type?: string,
|
||||
public readonly field?: string,
|
||||
public readonly value?: any
|
||||
) {
|
||||
super("Parameter verification failed!");
|
||||
}
|
||||
}
|
||||
|
||||
export function verify_number(data: any) {
|
||||
if (typeof data !== "number") throw new VerificationError("number", undefined, data);
|
||||
return data;
|
||||
}
|
||||
|
||||
export function strip_number(data: any) {
|
||||
return data;
|
||||
}
|
||||
|
||||
export function verify_string(data: any) {
|
||||
if (typeof data !== "string") throw new VerificationError("string", undefined, data);
|
||||
return data;
|
||||
}
|
||||
|
||||
export function strip_string(data: any) {
|
||||
return data;
|
||||
}
|
||||
|
||||
export function verify_boolean(data: any) {
|
||||
if (typeof data !== "boolean") throw new VerificationError("boolean", undefined, data);
|
||||
return data;
|
||||
}
|
||||
|
||||
export function strip_boolean(data: any) {
|
||||
return data;
|
||||
}
|
||||
|
||||
//TODO: Should it return data? it is kinda undefined actually...
|
||||
export function verify_void(data: any) {}
|
||||
|
||||
export function strip_void(data: any) {
|
||||
return undefined;
|
||||
}
|
@ -28,25 +28,3 @@ export interface ResponseObject {
|
||||
error?: { code: ErrorCodes; message: string; data?: any };
|
||||
id: string;
|
||||
}
|
||||
|
||||
export function verify_number(data: any) {
|
||||
if (typeof data !== "number") return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
export function verify_string(data: any) {
|
||||
if (typeof data !== "string") return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
export function verify_boolean(data: any) {
|
||||
if (typeof data !== "boolean") return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
export function verify_void(data: any) {
|
||||
return true;
|
||||
}
|
||||
|
@ -1,4 +1,6 @@
|
||||
//@template-ignore
|
||||
import { VerificationError } from "./ts_base";
|
||||
//@template-ignore
|
||||
import { RequestObject, ResponseObject, ErrorCodes, Logging } from "./ts_service_base";
|
||||
|
||||
|
||||
@ -48,7 +50,11 @@ export class ServiceProvider {
|
||||
let resListener = this.requests.get(msg.id);
|
||||
if(!resListener) return; // Ignore wrong responses
|
||||
if(msg.error) {
|
||||
resListener.err(new Error(msg.error.message));
|
||||
if(msg.error.data && msg.error.data.$ == "verification_error") {
|
||||
resListener.err(new VerificationError(msg.error.data.type, msg.error.data.field, msg.error.data.value))
|
||||
} else {
|
||||
resListener.err(new Error(msg.error.message));
|
||||
}
|
||||
} else {
|
||||
resListener.ok(msg.result);
|
||||
}
|
||||
|
@ -1,4 +1,6 @@
|
||||
//@template-ignore
|
||||
import { VerificationError } from "./ts_base";
|
||||
//@template-ignore
|
||||
import { RequestObject, ResponseObject, ErrorCodes, Logging } from "./ts_service_base";
|
||||
|
||||
|
||||
@ -109,6 +111,14 @@ class Session<T> {
|
||||
error: {
|
||||
code: ErrorCodes.InternalError,
|
||||
message: err.message,
|
||||
data: err instanceof VerificationError ? {
|
||||
$: "verification_error",
|
||||
type: err.type,
|
||||
field: err.field,
|
||||
value: err.value
|
||||
} : {
|
||||
$: "unknown_error"
|
||||
},
|
||||
},
|
||||
} as ResponseObject,
|
||||
err
|
||||
|
Reference in New Issue
Block a user