import {ResponseFactory} from './ResponseFactory' import {HTTPStatus} from '../../util' import {Request} from '../lifecycle/Request' /** * Helper function to create a new RedirectResponseFactory to the given destination. * @param destination */ export function redirect(destination: string|URL): RedirectResponseFactory { return new RedirectResponseFactory(destination instanceof URL ? destination.toString() : destination) } /** * Response factory that sends an HTTP redirect to the given destination. */ export class RedirectResponseFactory extends ResponseFactory { protected targetStatus: HTTPStatus = HTTPStatus.MOVED_TEMPORARILY constructor( /** THe URL where the client should redirect to. */ public readonly destination: string, ) { super() } public async write(request: Request): Promise { request = await super.write(request) request.response.setHeader('Location', this.destination) return request } }