md-toy-blog
Version:
Very simple Markdown blog: serves your md as html without fancy databases. You will only spend time writing the actual data.
33 lines (27 loc) • 1.16 kB
text/typescript
import RoutePathValidator from "./RoutePathValidator";
export default class PageRoute
extends RoutePathValidator
{
private pageFilePaths: string[];
controller: RouteControllerCtorConfig<PageControllerActionParams>;
constructor(public config: PageRouteCtorConfigProps) {
super(config);
this.controller = config.controller;
this.pageFilePaths = config.pageFilePathsGetter();
}
getControllerActionParams({ request }: { request: HttpRequest }) {
return { filepath: this.getHtmlFileRelativePathWithoutDot(request) };
}
protected isValid(request: HttpRequest) {
return this.pageFilePaths.indexOf(this.getHtmlFileRelativePathWithoutDot(request)) >= 0;
}
protected getHtmlFileRelativePathWithoutDot(request: HttpRequest): string {
const requestedFilepath = this.getRequestedFilepath(request);
console.log('requestedFilePath: ', requestedFilepath);
return `${(requestedFilepath === '/') ? '/index' : requestedFilepath}.html`;
}
protected getRequestedFilepath({ url }: { url: string; }) {
const stripOutQueryPart = /^(\/[^?]*)\?/g.exec(url);
return stripOutQueryPart ? stripOutQueryPart[1] : url;
}
}