mirror of
https://github.com/CommunitySolidServer/CommunitySolidServer.git
synced 2024-10-03 14:55:10 +00:00
27 lines
970 B
TypeScript
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;
|
|
}
|
|
}
|