import { method, request, responder, response } from "./interface/index"; export class handler { public responders: responder[]; public method: method; constructor( method: method, responders: responder[] ) { this.responders = responders; this.method = method; } add(responder: responder) { this.responders.push(responder); } async respond( request: request, responseMessage: response = new response( "" ) ): Promise | void> { switch (this.responders.length) { case 0: Promise.reject("No responders found in this handler."); break; case 1: return this.responders[0](request, responseMessage); default: for (let responder of this.responders) { let thisResponse = await responder(request, responseMessage); if (thisResponse instanceof response) { responseMessage = thisResponse; } } return responseMessage; } } } export default handler;