airship-server
Version:
Airship is a framework for Node.JS & TypeScript that helps you to write big, scalable and maintainable API servers.
28 lines (24 loc) • 806 B
text/typescript
import {BaseRequestHandler} from '../domain/BaseRequestHandler'
import {ASRequest} from '../domain/entity/ASRequest'
import {ASResponse} from '../domain/entity/ASResponse'
/**
* RequestHandlersManager pretends BaseRequestHandler
* and sends requests to handler that supports it
*/
export default class RequestHandlersManager extends BaseRequestHandler {
constructor(
private _handlers: BaseRequestHandler[]
) {
super()
}
public supports(request: ASRequest): boolean {
return true
}
public handle(request: ASRequest): Promise<ASResponse> {
for (const handler of this._handlers) {
if (handler.supports(request))
return handler.handle(request)
}
throw new Error('Cant find handler for request')
}
}