CommunitySolidServer/src/ldp/http/metadata/BasicMetadataExtractor.ts
2021-01-11 13:05:56 +01:00

27 lines
970 B
TypeScript

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';
/**
* MetadataExtractor that lets each of its MetadataParsers add metadata based on the HttpRequest.
*/
export class BasicMetadataExtractor extends MetadataExtractor {
private readonly parsers: MetadataParser[];
public constructor(parsers: MetadataParser[]) {
super();
this.parsers = parsers;
}
public async handle({ request, target }: { request: HttpRequest; target: ResourceIdentifier }):
Promise<RepresentationMetadata> {
const metadata = new RepresentationMetadata(target);
for (const parser of this.parsers) {
await parser.parse(request, metadata);
}
return metadata;
}
}