You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
import {ResponseFactory} from "./ResponseFactory";
|
|
|
|
import {HTTPStatus} from "../../util";
|
|
|
|
import {Request} from "../lifecycle/Request";
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Helper function to create a new TemporaryRedirectResponseFactory to the given destination.
|
|
|
|
* @param destination
|
|
|
|
*/
|
|
|
|
export function redirect(destination: string): TemporaryRedirectResponseFactory {
|
|
|
|
return new TemporaryRedirectResponseFactory(destination)
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Response factory that sends an HTTP redirect to the given destination.
|
|
|
|
*/
|
|
|
|
export class TemporaryRedirectResponseFactory extends ResponseFactory {
|
|
|
|
protected targetStatus: HTTPStatus = HTTPStatus.TEMPORARY_REDIRECT
|
|
|
|
|
|
|
|
constructor(
|
|
|
|
/** THe URL where the client should redirect to. */
|
|
|
|
public readonly destination: string
|
|
|
|
) { super() }
|
|
|
|
|
|
|
|
public async write(request: Request) {
|
|
|
|
request = await super.write(request)
|
|
|
|
request.response.setHeader('Location', this.destination)
|
|
|
|
return request
|
|
|
|
}
|
|
|
|
}
|