feat: print reponse
This commit is contained in:
1
Cargo.lock
generated
1
Cargo.lock
generated
@@ -1682,6 +1682,7 @@ version = "0.1.0"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"base64 0.22.0",
|
"base64 0.22.0",
|
||||||
|
"bytes",
|
||||||
"http 1.1.0",
|
"http 1.1.0",
|
||||||
"log",
|
"log",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
|
|||||||
@@ -20,3 +20,4 @@ p256 = "0.13.2"
|
|||||||
p384 = "0.13.0"
|
p384 = "0.13.0"
|
||||||
p521 = "0.13.3"
|
p521 = "0.13.3"
|
||||||
once_cell = "1.19.0"
|
once_cell = "1.19.0"
|
||||||
|
bytes = "1.6.0"
|
||||||
|
|||||||
32
src/app.rs
32
src/app.rs
@@ -1,8 +1,10 @@
|
|||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use base64::Engine;
|
use base64::Engine;
|
||||||
use base64::engine::general_purpose::STANDARD;
|
use base64::engine::general_purpose::STANDARD;
|
||||||
|
use bytes::Bytes;
|
||||||
use http::HeaderName;
|
use http::HeaderName;
|
||||||
use pingora::{Error, ErrorType};
|
use pingora::{Error, ErrorType};
|
||||||
|
use pingora::http::ResponseHeader;
|
||||||
use pingora::prelude::{HttpPeer, ProxyHttp, Result, Session};
|
use pingora::prelude::{HttpPeer, ProxyHttp, Result, Session};
|
||||||
|
|
||||||
use super::service::HostConfig;
|
use super::service::HostConfig;
|
||||||
@@ -83,4 +85,34 @@ impl ProxyHttp for ProxyApp {
|
|||||||
log::info!("Request:\n{}\n\n{}", req, body.unwrap_or_else(|| "<None>".into()));
|
log::info!("Request:\n{}\n\n{}", req, body.unwrap_or_else(|| "<None>".into()));
|
||||||
Ok(false)
|
Ok(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async fn response_filter(
|
||||||
|
&self,
|
||||||
|
_session: &mut Session,
|
||||||
|
upstream_response: &mut ResponseHeader,
|
||||||
|
_ctx: &mut Self::CTX,
|
||||||
|
) -> Result<()>
|
||||||
|
where Self::CTX: Send + Sync,
|
||||||
|
{
|
||||||
|
let mut resp = String::new();
|
||||||
|
resp.push_str(&format!("version: {}\n", upstream_response.status));
|
||||||
|
resp.push_str(&format!("headers: {:#?}", upstream_response.headers));
|
||||||
|
|
||||||
|
log::info!("Response: {}", resp);
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn upstream_response_body_filter(
|
||||||
|
&self,
|
||||||
|
_session: &mut Session,
|
||||||
|
body: &Option<Bytes>,
|
||||||
|
end_of_stream: bool,
|
||||||
|
_ctx: &mut Self::CTX,
|
||||||
|
) {
|
||||||
|
log::info!("Body {}: [[[{}]]] ",end_of_stream,
|
||||||
|
body.as_ref().map(|bytes|
|
||||||
|
String::from_utf8_lossy(bytes.iter().as_slice())
|
||||||
|
).unwrap_or_else(|| "<none>".into())
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user