h10 0.6.15

Simple HTTP/1.0 Server
Documentation
use html_rs::{
    elements::{ElementBuilder, Link, Meta, TextContent, Title, H1},
    Html, HtmlBody,
};

use h10::http::{
    headers::{ContentType, Pragma, Server},
    result::H10LibResult,
    status_code::StatusCode,
};

use crate::server::ServerResponse;

pub fn error_404() -> H10LibResult<ServerResponse> {
    let favicon_disabled = Link::builder()
        .attr("rel", "shortcut icon")
        .attr("href", "data:image/x-icon;,")
        .attr("type", "image/x-icon");
    let html = Html::builder()
        .head_item(Title::builder().append_child(TextContent::text("Not Found")))
        .head_item(favicon_disabled)
        .head_item(Meta::builder().attr("charset", "utf-8"))
        .body(
            HtmlBody::builder()
                .set_attr("lang", "en")
                .set_attr("server-name", env!("CARGO_PKG_NAME"))
                .set_attr("server-version", env!("CARGO_PKG_VERSION"))
                .append_child(H1::builder().append_child(TextContent::text("Not Found"))),
        );

    #[cfg(feature = "debug")]
    println!("{html:?}");

    Ok(ServerResponse::new(StatusCode::NotFound)
        .add_header(ContentType::html())
        .add_header(Server::default())
        .add_header(Pragma::default())
        .set_body(html.to_string()))
}