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.
39 lines
1.1 KiB
39 lines
1.1 KiB
use actix_web::http::header::IntoHeaderValue;
|
|
use actix_web::HttpResponse;
|
|
use std::str::FromStr;
|
|
use std::fmt::{Display, Debug};
|
|
|
|
pub fn redirect(path: impl IntoHeaderValue) -> actix_web::Result<HttpResponse> {
|
|
Ok(HttpResponse::SeeOther()
|
|
.header("location", path) // back - to where?
|
|
.finish())
|
|
}
|
|
|
|
pub trait ParseOrBadReq {
|
|
fn parse_or_bad_request<T, E>(&self) -> actix_web::Result<T>
|
|
where T: FromStr<Err=E>,
|
|
E: Display + Debug + 'static;
|
|
}
|
|
|
|
impl ParseOrBadReq for &str {
|
|
fn parse_or_bad_request<T, E>(&self) -> actix_web::Result<T>
|
|
where T: FromStr<Err=E>,
|
|
E: Display + Debug + 'static
|
|
{
|
|
self.parse::<T>()
|
|
.map_err(|e| {
|
|
error!("Parse error for \"{}\"", self);
|
|
actix_web::error::ErrorBadRequest(e)
|
|
})
|
|
}
|
|
}
|
|
|
|
impl ParseOrBadReq for String {
|
|
fn parse_or_bad_request<T, E>(&self) -> actix_web::Result<T>
|
|
where T: FromStr<Err=E>,
|
|
E: Display + Debug + 'static
|
|
{
|
|
self.as_str()
|
|
.parse_or_bad_request()
|
|
}
|
|
}
|
|
|