@ima/core
Version:
IMA.js framework for isomorphic javascript application
61 lines (60 loc) • 1.7 kB
JavaScript
import { AbstractRouter } from './AbstractRouter';
import { Request } from './Request';
import { Response } from './Response';
import { RouteFactory } from './RouteFactory';
import { Dispatcher } from '../event/Dispatcher';
import { PageManager } from '../page/manager/PageManager';
/**
* The server-side implementation of the {@link Router} interface.
*/ export class ServerRouter extends AbstractRouter {
#request;
#response;
static get $dependencies() {
return [
PageManager,
RouteFactory,
Dispatcher,
Request,
Response,
'?$Settings.$Router.middlewareTimeout'
];
}
/**
* Initializes the router.
*
* @param pageManager The current page manager.
* @param factory The router factory used to create routes.
* @param dispatcher Dispatcher fires events to app.
* @param request The current HTTP request.
* @param response The current HTTP response.
* @param settings $Router settings.
*/ constructor(pageManager, factory, dispatcher, request, response, settings){
super(pageManager, factory, dispatcher, settings);
this.#request = request;
this.#response = response;
}
/**
* @inheritDoc
*/ getPath() {
return this._extractRoutePath(this.#request.getPath());
}
/**
* @inheritDoc
*/ listen() {
return this;
}
/**
* @inheritDoc
*/ unlisten() {
return this;
}
/**
* @inheritDoc
*/ redirect(url = '/', options) {
this.#response.redirect(url, {
httpStatus: 302,
...options
});
}
}
//# sourceMappingURL=ServerRouter.js.map