diff --git a/API.paw b/API.paw index 4afa3fe93f8591081892b1502dabbde6a636f089..071cb5ae605066d9cf7866994ea3bb596249d413 100644 Binary files a/API.paw and b/API.paw differ diff --git a/src/controller/BaseController.ts b/src/controller/BaseController.ts index 76e707156b7ac734a38fc97e42aca4a95c2722b1..69a151758296662751a51db0f1c75f3438a56b90 100644 --- a/src/controller/BaseController.ts +++ b/src/controller/BaseController.ts @@ -17,4 +17,10 @@ export default class BaseController { return mementoDate; } + setMementoHeaderIfNecessary(date: Date | undefined, response: Response): void { + if(date) { + response.setHeader("Memento-Datetime", date.toISOString()); + } + } + } \ No newline at end of file diff --git a/src/controller/ComponentController.ts b/src/controller/ComponentController.ts index 449fc88abc95d4fa3386425b70a842499cca96fa..b6f260a83712415bdcef3561ec462c263e6b46dd 100644 --- a/src/controller/ComponentController.ts +++ b/src/controller/ComponentController.ts @@ -38,13 +38,16 @@ export default class ComponentController extends BaseController { return; } - Component.findById(request.params.componentId, this.componentRepository, this.getMementoDate(request)).then(async (component) => { + const mementoDate: Date | undefined = this.getMementoDate(request); + + Component.findById(request.params.componentId, this.componentRepository, mementoDate).then(async (component) => { if(component) { const componentJsonLd = component.toJSONLD(); this.setJSONLDResponseType(response); response.send(componentJsonLd); } else { response.status(404); + this.setMementoHeaderIfNecessary(mementoDate, response); this.setJSONLDResponseType(response); response.send(new APIError("Component not found.")); } @@ -92,7 +95,9 @@ export default class ComponentController extends BaseController { } findRoots = async (request: Request, response: Response) => { - const roots = await Component.findRoots(this.componentRepository, this.getMementoDate(request)); + const mementoDate: Date | undefined = this.getMementoDate(request); + const roots = await Component.findRoots(this.componentRepository, mementoDate); + this.setMementoHeaderIfNecessary(mementoDate, response); if(roots) { const result: Record<string, unknown>[] = roots.map((root) => { return root.toJSONLD(); }); this.setJSONLDResponseType(response);