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))?)
}