fn get_swoole_request_url()

in src/request.rs [295:319]


fn get_swoole_request_url(server: &ZArr, headers: &ZArr) -> crate::Result<Url> {
    let addr = headers
        .get("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)
        .unwrap_or_else(|| "/unknown".to_string());

    let query = server
        .get("query_string")
        .and_then(z_val_to_string)
        .map(|s| format!("?{}", s))
        .unwrap_or_default();

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