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 target = await this.targetExtractor.handleSafe({ request });
|
||||||
const preferences = await this.preferenceParser.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 });
|
const body = await this.bodyParser.handleSafe({ request, metadata });
|
||||||
|
|
||||||
return { method, target, preferences, body };
|
return { method, target, preferences, body };
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import type { HttpRequest } from '../../../server/HttpRequest';
|
import type { HttpRequest } from '../../../server/HttpRequest';
|
||||||
import { RepresentationMetadata } from '../../representation/RepresentationMetadata';
|
import { RepresentationMetadata } from '../../representation/RepresentationMetadata';
|
||||||
|
import type { ResourceIdentifier } from '../../representation/ResourceIdentifier';
|
||||||
import { MetadataExtractor } from './MetadataExtractor';
|
import { MetadataExtractor } from './MetadataExtractor';
|
||||||
import type { MetadataParser } from './MetadataParser';
|
import type { MetadataParser } from './MetadataParser';
|
||||||
|
|
||||||
@ -14,9 +15,9 @@ export class BasicMetadataExtractor extends MetadataExtractor {
|
|||||||
this.parsers = parsers;
|
this.parsers = parsers;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async handle({ request }: { request: HttpRequest }):
|
public async handle({ request, target }: { request: HttpRequest; target: ResourceIdentifier }):
|
||||||
Promise<RepresentationMetadata> {
|
Promise<RepresentationMetadata> {
|
||||||
const metadata = new RepresentationMetadata();
|
const metadata = new RepresentationMetadata(target);
|
||||||
for (const parser of this.parsers) {
|
for (const parser of this.parsers) {
|
||||||
await parser.parse(request, metadata);
|
await parser.parse(request, metadata);
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
import type { HttpRequest } from '../../../server/HttpRequest';
|
import type { HttpRequest } from '../../../server/HttpRequest';
|
||||||
import { AsyncHandler } from '../../../util/AsyncHandler';
|
import { AsyncHandler } from '../../../util/AsyncHandler';
|
||||||
import type { RepresentationMetadata } from '../../representation/RepresentationMetadata';
|
import type { RepresentationMetadata } from '../../representation/RepresentationMetadata';
|
||||||
|
import type { ResourceIdentifier } from '../../representation/ResourceIdentifier';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parses the metadata of a {@link HttpRequest} into a {@link RepresentationMetadata}.
|
* Parses the metadata of a {@link HttpRequest} into a {@link RepresentationMetadata}.
|
||||||
*/
|
*/
|
||||||
export abstract class MetadataExtractor extends
|
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> => {
|
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' ]);
|
expect(metadata.getAll(RDF.type).map((term): any => term.value)).toEqual([ 'valA', 'valB' ]);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user