use actix_web::http::StatusCode; use export::http::Response; use maud::html; pub fn html_err(code: u16, msg: &str) -> Response { let safe_msg = match code { 401 => "auth required", 403 => "forbidden", 404 => "not found", 504 => "timeout", _ => "internal", }; let display_msg = if msg.is_empty() { safe_msg } else { msg }; let markup = html! { div class="git-err rounded border border-red-200 bg-red-50 p-3 text-sm text-red-700" data-code=(code) data-component="git-err" role="alert" { (display_msg) } }; let body = markup.into_string(); let status = StatusCode::from_u16(code).unwrap_or(StatusCode::INTERNAL_SERVER_ERROR); let mut resp = actix_web::HttpResponse::build(status).body(body); resp.headers_mut().insert( actix_web::http::header::CONTENT_TYPE, "text/html; charset=utf-8".parse().unwrap(), ); resp.headers_mut().insert( actix_web::http::header::CACHE_CONTROL, "no-store".parse().unwrap(), ); resp.headers_mut() .insert(actix_web::http::header::VARY, "Cookie".parse().unwrap()); resp }