mirror of
https://github.com/CommunitySolidServer/CommunitySolidServer.git
synced 2024-10-03 14:55:10 +00:00
feat: Store target identifier when parsing metadata
This commit is contained in:
parent
f17054c647
commit
76def28a68
@ -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 };
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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> {}
|
||||
|
@ -32,7 +32,11 @@ describe('A BasicMetadataExtractor', (): void => {
|
||||
});
|
||||
|
||||
it('will add metadata from the parsers.', async(): Promise<void> => {
|
||||
const metadata = await handler.handle({ request: { headers: { aa: 'valA', bb: 'valB' } as any } as HttpRequest });
|
||||
const target = { path: 'http://test.com/id' };
|
||||
const metadata = await handler.handle(
|
||||
{ target, request: { headers: { aa: 'valA', bb: 'valB' } as any } as HttpRequest },
|
||||
);
|
||||
expect(metadata.identifier.value).toBe(target.path);
|
||||
expect(metadata.getAll(RDF.type).map((term): any => term.value)).toEqual([ 'valA', 'valB' ]);
|
||||
});
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user