@@ -53,6 +53,52 @@ impl Response {
53
53
}
54
54
}
55
55
56
+ /// Creates a response that represents a permanent redirect to `location`.
57
+ ///
58
+ ///
59
+ /// # Example
60
+ ///
61
+ /// ```
62
+ /// # use tide::{Response, Request};
63
+ /// # fn canonicalize(uri: &url::Url) -> Option<&url::Url> { None }
64
+ /// # #[allow(dead_code)]
65
+ /// async fn route_handler(request: Request<()>) -> tide::Result<Response> {
66
+ /// if let Some(canonical_redirect) = canonicalize(request.uri()) {
67
+ /// Ok(Response::redirect_perm(canonical_redirect))
68
+ /// } else {
69
+ /// //...
70
+ /// # Ok(Response::new(http_types::StatusCode::Ok)) // ...
71
+ /// }
72
+ /// }
73
+ /// ```
74
+ pub fn redirect_perm ( location : impl AsRef < str > ) -> Self {
75
+ Response :: new ( StatusCode :: PermanentRedirect )
76
+ . set_header ( "location" . parse ( ) . unwrap ( ) , location)
77
+ }
78
+
79
+ /// Creates a response that represents a temporary redirect to `location`.
80
+ ///
81
+ ///
82
+ /// # Example
83
+ ///
84
+ /// ```
85
+ /// # use tide::{Response, Request};
86
+ /// # fn special_sale_today() -> Option<String> { None }
87
+ /// # #[allow(dead_code)]
88
+ /// async fn route_handler(request: Request<()>) -> tide::Result<Response> {
89
+ /// if let Some(sale_url) = special_sale_today() {
90
+ /// Ok(Response::redirect_temp(sale_url))
91
+ /// } else {
92
+ /// //...
93
+ /// # Ok(Response::new(http_types::StatusCode::Ok)) //...
94
+ /// }
95
+ /// }
96
+ /// ```
97
+ pub fn redirect_temp ( location : impl AsRef < str > ) -> Self {
98
+ Response :: new ( StatusCode :: TemporaryRedirect )
99
+ . set_header ( "location" . parse ( ) . unwrap ( ) , location)
100
+ }
101
+
56
102
/// Returns the statuscode.
57
103
pub fn status ( & self ) -> http_types:: StatusCode {
58
104
self . res . status ( )
0 commit comments