feat: Add OperationHandler for PATCH

This commit is contained in:
Joachim Van Herwegen
2020-07-22 13:43:26 +02:00
parent 95c65c86a7
commit 482991cb9a
2 changed files with 50 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
import { Operation } from './Operation';
import { OperationHandler } from './OperationHandler';
import { Patch } from '../http/Patch';
import { ResourceStore } from '../../storage/ResourceStore';
import { ResponseDescription } from './ResponseDescription';
import { UnsupportedHttpError } from '../../util/errors/UnsupportedHttpError';
export class SimplePatchOperationHandler extends OperationHandler {
private readonly store: ResourceStore;
public constructor(store: ResourceStore) {
super();
this.store = store;
}
public async canHandle(input: Operation): Promise<void> {
if (input.method !== 'PATCH') {
throw new UnsupportedHttpError('This handler only supports PATCH operations.');
}
}
public async handle(input: Operation): Promise<ResponseDescription> {
await this.store.modifyResource(input.target, input.body as Patch);
return { identifier: input.target };
}
}