** (Response Object) Use to send redirect 3xx status codes to the client. Handles the ** differences in HTTP 1.0 and HTTP 1.1. ** ** Redirect.movedTemporarily(`/newUrl`)** ** @see** - `http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_Redirection`** - `http://www.iana.org/assignments/http-status-codes/http-status-codes.xml`constfinalclass Redirect {** The URI to redirect toconst Uri uriinternalconst RedirectType typeprivatenew make(Uri redirectTo, RedirectType type){this.uri = redirectTothis.type = type}** Sends a 'Moved Permanently' response to the client with the following status codes:** - 301 for HTTP 1.0 ** - 308 for HTTP 1.1** ** The client should use the same HTTP method when requesting the redirect.// @see `http://fantom.org/sidewalk/topic/2169#c14003`staticnew movedPermanently(Uri redirectTo){ Redirect.make(redirectTo, RedirectType.movedPermanently)}** Sends a 'Moved Temporarily' response to the client with the following status codes:** - 302 for HTTP 1.0 ** - 307 for HTTP 1.1** ** The client should use the same HTTP method when requesting the redirect.staticnew movedTemporarily(Uri redirectTo){ Redirect.make(redirectTo, RedirectType.movedTemporarily)}** Use when the client should perform a HTTP GET on the returned uri. Typically this is ** when you implement the *Redirect After Post* paradigm. ** - 302 for HTTP 1.0 ** - 303 for HTTP 1.1staticnew afterPost(Uri redirectTo){ Redirect.make(redirectTo, RedirectType.afterPost)} @NoDocoverride Str toStr(){"Redirect -> ${uri} (${type.toStr.toDisplayName})"}}** the order is important - see `RedirectResponseProcessor`internal enum class RedirectType { movedPermanently, movedTemporarily, afterPost;}