@iotize/tap
Version:
IoTize Device client for Javascript
148 lines • 8.15 kB
JavaScript
export class MockRouter {
constructor() {
this._routes = [];
}
// constructor() {
// this._routes = [];
// }
get routes() {
return this._routes;
}
findRoute(request) {
const candidates = this._routes.filter((r) => r.predicate(request));
if (candidates.length === 0) {
return undefined;
}
else {
return candidates[0].adapter(request);
}
}
// addRoutes(map: RouteMapping) {
// // throw new Error('Method not implemented.');
// // TODO
// }
addRoute(predicate, adapter) {
// var filter: Predicate<Command>;
// if (typeof left === 'string') {
// left = Util.parseApiRequestString(left);
// }
// if (left instanceof ApiRequest) {
// filter = new EqualRequestFilter(left);
// } else if (left instanceof RegExp) {
// filter = new RegExpFilter(left);
// } else if (typeof left === 'function') {
// filter = {
// test: left
// };
// } else {
// filter = left as Predicate<Command>;
// }
// var adapter: ResponseAdapter<T>;
// if (right instanceof ResponseImpl) {
// adapter = new (class Tmp implements ResponseAdapter<T> {
// public adapt(command: Command) {
// return right;
// }
// })();
// } else if (right instanceof Uint8Array) {
// adapter = new (class Tmp implements ResponseAdapter<T> {
// public adapt(command: Command) {
// return new ResponseImpl<T>(right);
// }
// })();
// } else if (typeof right === 'function') {
// adapter = {
// adapt: right
// };
// } else {
// adapter = right as ResponseAdapter<T>;
// }
this._routes.push({
predicate,
adapter,
});
return this;
}
// /**
// * Mapping a command (represented as a string with format "<request-type> <path> [data]"
// * ie: GET /3//3 0xABCD or POST /1024//0 0xtest
// *
// * TapResponse must either be:
// * - an hexadecimal data represented as a string (0xABCD)
// * - An object with a coreRet and a body
// * - A Uint8Array
// */
// addRoutes(map: { [key: string]: RouteType }): this {
// for (const pathString in map) {
// const info = map[pathString];
// const command: Command = Util.parseApiRequestString(pathString);
// let response;
// if (info instanceof Uint8Array) {
// response = new ResponseImpl(info);
// } else if (info instanceof ResponseImpl) {
// response = info;
// } else if (typeof info === 'number') {
// response = ResponseImpl.create(info);
// } else if (typeof info === 'string') {
// response = new ResponseImpl(
// hexStringToBuffer(info)
// );
// } else if (typeof info === 'object') {
// const codeRet: number = (info as RouteTypeObject).codeRet;
// response = new ResponseImpl(
// KaitaiStreamWriter.mergeArrays(
// Uint8Array.from([codeRet]),
// (info as RouteTypeObject).body || new Uint8Array(0)
// )
// );
// } else {
// throw new Error(
// `Invalid response type ${typeof info} with value: ${JSON.stringify(
// info
// )}`
// );
// }
// debug(TAG, `\t- Add map ${command} -> ${response}`);
// this.addRoute(command, response);
// }
// return this;
// }
clearRoutes() {
this._routes = [];
return this;
}
}
// /**
// * @deprecated in favor of {@link #addRoute}
// */
// public mapResponse<T>(
// left:
// | FilterFunction<TapRequestFrame>
// | Predicate<TapRequestFrame>
// | TapRequestFrame,
// right:
// | ResponseAdapterFunction<T>
// | ResponseAdapter<T>
// | TapResponse<T>
// | Uint8Array
// ): this {
// return this.addRoute(left, right);
// }
// public addRoute<T>(
// left:
// | FilterFunction<TapRequestFrame>
// | Predicate<TapRequestFrame>
// | TapRequestFrame,
// right:
// | ResponseAdapterFunction<T>
// | ResponseAdapter<T>
// | TapResponse<T>
// | Uint8Array
// ): this {
// this.router.addRoute(left, right);
// return this;
// }
// // public Configuration getConfiguration() {
// // return configuration;
// // }
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1yb3V0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90ZXN0aW5nL3NyYy9tb2NrL21vY2stcm91dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxVQUFVO0lBQXZCO1FBQ0UsWUFBTyxHQUdELEVBQUUsQ0FBQztJQXFIWCxDQUFDO0lBbkhDLHNCQUFzQjtJQUN0Qiw2QkFBNkI7SUFDN0IsUUFBUTtJQUVSLElBQVcsTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsU0FBUyxDQUFDLE9BQWtCO1FBQzFCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDcEUsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUMzQixPQUFPLFNBQVMsQ0FBQztTQUNsQjthQUFNO1lBQ0wsT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3ZDO0lBQ0gsQ0FBQztJQUVELGlDQUFpQztJQUNqQyxxREFBcUQ7SUFDckQsY0FBYztJQUNkLElBQUk7SUFFRyxRQUFRLENBQUksU0FBK0IsRUFBRSxPQUFZO1FBQzlELGtDQUFrQztRQUNsQyxrQ0FBa0M7UUFDbEMsK0NBQStDO1FBQy9DLElBQUk7UUFDSixvQ0FBb0M7UUFDcEMsNkNBQTZDO1FBQzdDLHVDQUF1QztRQUN2Qyx1Q0FBdUM7UUFDdkMsMkNBQTJDO1FBQzNDLGlCQUFpQjtRQUNqQixxQkFBcUI7UUFDckIsU0FBUztRQUNULFdBQVc7UUFDWCwyQ0FBMkM7UUFDM0MsSUFBSTtRQUNKLG1DQUFtQztRQUNuQyx1Q0FBdUM7UUFDdkMsK0RBQStEO1FBQy9ELDJDQUEyQztRQUMzQyw0QkFBNEI7UUFDNUIsWUFBWTtRQUNaLFlBQVk7UUFDWiw0Q0FBNEM7UUFDNUMsK0RBQStEO1FBQy9ELDJDQUEyQztRQUMzQyxpREFBaUQ7UUFDakQsWUFBWTtRQUNaLFlBQVk7UUFDWiw0Q0FBNEM7UUFDNUMsa0JBQWtCO1FBQ2xCLHVCQUF1QjtRQUN2QixTQUFTO1FBQ1QsV0FBVztRQUNYLDZDQUE2QztRQUM3QyxJQUFJO1FBQ0osSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDaEIsU0FBUztZQUNULE9BQU87U0FDUixDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxVQUFVO0lBQ1YsK0ZBQStGO0lBQy9GLHNEQUFzRDtJQUN0RCxTQUFTO0lBQ1QscUNBQXFDO0lBQ3JDLGlFQUFpRTtJQUNqRSxnREFBZ0Q7SUFDaEQseUJBQXlCO0lBQ3pCLFVBQVU7SUFDVix1REFBdUQ7SUFDdkQsc0NBQXNDO0lBQ3RDLHdDQUF3QztJQUN4QywyRUFBMkU7SUFDM0Usd0JBQXdCO0lBRXhCLDRDQUE0QztJQUM1QyxpREFBaUQ7SUFDakQscURBQXFEO0lBQ3JELCtCQUErQjtJQUMvQixpREFBaUQ7SUFDakQsb0RBQW9EO0lBQ3BELGlEQUFpRDtJQUNqRCwyQ0FBMkM7SUFDM0MsMENBQTBDO0lBQzFDLGlCQUFpQjtJQUNqQixpREFBaUQ7SUFDakQseUVBQXlFO0lBQ3pFLDJDQUEyQztJQUMzQyxrREFBa0Q7SUFDbEQsa0RBQWtEO0lBQ2xELDBFQUEwRTtJQUMxRSxvQkFBb0I7SUFDcEIsaUJBQWlCO0lBQ2pCLG1CQUFtQjtJQUNuQiwrQkFBK0I7SUFDL0Isc0ZBQXNGO0lBQ3RGLDJCQUEyQjtJQUMzQixzQkFBc0I7SUFDdEIsaUJBQWlCO0lBQ2pCLFlBQVk7SUFDWiwrREFBK0Q7SUFDL0QsNENBQTRDO0lBQzVDLFFBQVE7SUFDUixtQkFBbUI7SUFDbkIsSUFBSTtJQUVKLFdBQVc7UUFDVCxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRjtBQUVELE1BQU07QUFDTiwrQ0FBK0M7QUFDL0MsTUFBTTtBQUNOLHlCQUF5QjtBQUN6QixZQUFZO0FBQ1osNENBQTRDO0FBQzVDLHVDQUF1QztBQUN2Qyw2QkFBNkI7QUFDN0IsYUFBYTtBQUNiLHVDQUF1QztBQUN2QywrQkFBK0I7QUFDL0IsMkJBQTJCO0FBQzNCLHVCQUF1QjtBQUN2QixZQUFZO0FBQ1oseUNBQXlDO0FBQ3pDLElBQUk7QUFFSixzQkFBc0I7QUFDdEIsWUFBWTtBQUNaLDRDQUE0QztBQUM1Qyx1Q0FBdUM7QUFDdkMsNkJBQTZCO0FBQzdCLGFBQWE7QUFDYix1Q0FBdUM7QUFDdkMsK0JBQStCO0FBQy9CLDJCQUEyQjtBQUMzQix1QkFBdUI7QUFDdkIsWUFBWTtBQUNaLHlDQUF5QztBQUN6QyxtQkFBbUI7QUFDbkIsSUFBSTtBQUVKLG1EQUFtRDtBQUNuRCwrQkFBK0I7QUFDL0IsT0FBTyJ9