feat: add additional supported interfaces

This includes the relevant auth headers and a simplification of several others.
This commit is contained in:
Joachim Van Herwegen
2020-05-25 11:05:04 +02:00
parent f8e136cadb
commit a4f2b3995c
12 changed files with 107 additions and 35 deletions

View File

@@ -1,4 +1,6 @@
import { Representation } from './Representation';
/**
* Represents the changes needed for a PATCH request.
*/
export interface Patch {}
export interface Patch extends Representation {}

View File

@@ -0,0 +1,8 @@
import { AsyncHandler } from '../../util/AsyncHandler';
import { HttpRequest } from '../../server/HttpRequest';
import { Operation } from '../operations/Operation';
/**
* Converts an incoming HttpRequest to an Operation.
*/
export type RequestParser = AsyncHandler<HttpRequest, Operation>;

View File

@@ -1,21 +1,7 @@
import { AsyncHandler } from '../../util/AsyncHandler';
import { Operation } from './Operation';
/**
* Handler for a specific operation type.
*/
export interface OperationHandler {
/**
* Checks if the handler supports the given operation.
* @param operation - The input operation.
*
* @returns A promise resolving to a boolean indicating if this handler supports the operation.
*/
canHandle: (operation: Operation) => Promise<boolean>;
/**
* Handles the given operation.
* @param operation - The input operation.
*
* @returns A promise resolving when the operation is handled.
*/
handle: (operation: Operation) => Promise<void>;
}
export type OperationHandler = AsyncHandler<Operation>;

View File

@@ -0,0 +1,9 @@
/**
* A data interface indicating which permissions are allowed (based on the context).
*/
export interface PermissionSet {
read: boolean;
append: boolean;
write: boolean;
delete: boolean;
}

View File

@@ -0,0 +1,8 @@
import { AsyncHandler } from '../../util/AsyncHandler';
import { Operation } from '../operations/Operation';
import { PermissionSet } from './PermissionSet';
/**
* Verifies which permissions are requested on a given {@link Operation}.
*/
export type PermissionsExtractor = AsyncHandler<Operation, PermissionSet>;