feat: Store target identifier when parsing metadata

This commit is contained in:
Joachim Van Herwegen
2021-01-07 15:55:19 +01:00
parent f17054c647
commit 76def28a68
4 changed files with 11 additions and 5 deletions

View File

@@ -38,7 +38,7 @@ export class BasicRequestParser extends RequestParser {
}
const target = await this.targetExtractor.handleSafe({ request });
const preferences = await this.preferenceParser.handleSafe({ request });
const metadata = await this.metadataExtractor.handleSafe({ request });
const metadata = await this.metadataExtractor.handleSafe({ request, target });
const body = await this.bodyParser.handleSafe({ request, metadata });
return { method, target, preferences, body };

View File

@@ -1,5 +1,6 @@
import type { HttpRequest } from '../../../server/HttpRequest';
import { RepresentationMetadata } from '../../representation/RepresentationMetadata';
import type { ResourceIdentifier } from '../../representation/ResourceIdentifier';
import { MetadataExtractor } from './MetadataExtractor';
import type { MetadataParser } from './MetadataParser';
@@ -14,9 +15,9 @@ export class BasicMetadataExtractor extends MetadataExtractor {
this.parsers = parsers;
}
public async handle({ request }: { request: HttpRequest }):
public async handle({ request, target }: { request: HttpRequest; target: ResourceIdentifier }):
Promise<RepresentationMetadata> {
const metadata = new RepresentationMetadata();
const metadata = new RepresentationMetadata(target);
for (const parser of this.parsers) {
await parser.parse(request, metadata);
}

View File

@@ -1,9 +1,10 @@
import type { HttpRequest } from '../../../server/HttpRequest';
import { AsyncHandler } from '../../../util/AsyncHandler';
import type { RepresentationMetadata } from '../../representation/RepresentationMetadata';
import type { ResourceIdentifier } from '../../representation/ResourceIdentifier';
/**
* Parses the metadata of a {@link HttpRequest} into a {@link RepresentationMetadata}.
*/
export abstract class MetadataExtractor extends
AsyncHandler<{ request: HttpRequest }, RepresentationMetadata> {}
AsyncHandler<{ request: HttpRequest; target: ResourceIdentifier }, RepresentationMetadata> {}