fn get_page_request_url()

in src/request.rs [115:143]


fn get_page_request_url(server: &ZArr) -> crate::Result<Url> {
    let scheme = if [Some("1"), Some("on")]
        .contains(&server.get("HTTPS").and_then(z_val_to_string).as_deref())
    {
        "https"
    } else {
        "http"
    };

    let addr = server
        .get("HTTP_HOST")
        .and_then(z_val_to_string)
        .or_else(|| {
            server
                .get("SERVER_PORT")
                .and_then(z_val_to_string)
                .map(|port| format!("localhost:{}", port))
        })
        .unwrap_or_else(|| "unknown:0".to_string());

    let uri = server
        .get("REQUEST_URI")
        .and_then(z_val_to_string)
        .or_else(|| server.get("PHP_SELF").and_then(z_val_to_string))
        .or_else(|| server.get("SCRIPT_NAME").and_then(z_val_to_string))
        .unwrap_or_else(|| "/unknown".to_string());

    Ok(Url::parse(&format!("{}://{}{}", scheme, addr, uri))?)
}