refactor/feat: Response::bytes() and text(), rename body->stream

This commit is contained in:
DarkCat09 2024-08-05 12:04:35 +04:00
parent 2ca51a5a20
commit 16af1c1bd0
Signed by: DarkCat09
GPG key ID: 0A26CD5B3345D6E3
2 changed files with 21 additions and 5 deletions

View file

@ -11,6 +11,7 @@ categories = ["network-programming"]
[dependencies] [dependencies]
base64ct = "1.6.0" base64ct = "1.6.0"
bytes = "1.7.1"
mime = "0.3.17" mime = "0.3.17"
num_enum = "0.7.3" num_enum = "0.7.3"
sha2 = "0.10.8" sha2 = "0.10.8"

View file

@ -1,20 +1,23 @@
use crate::{status::Status, LibError}; use crate::{status::Status, LibError};
use bytes::Bytes;
use tokio::io::AsyncReadExt;
type BodyStream = tokio_rustls::client::TlsStream<tokio::net::TcpStream>; type BodyStream = tokio_rustls::client::TlsStream<tokio::net::TcpStream>;
#[derive(Debug)] #[derive(Debug)]
pub struct Response { pub struct Response {
status: Status, status: Status,
message: String, message: String,
body: BodyStream, stream: BodyStream,
} }
impl Response { impl Response {
pub fn new(status: Status, message: String, body: BodyStream) -> Self { pub fn new(status: Status, message: String, stream: BodyStream) -> Self {
Response { Response {
status, status,
message, message,
body, stream,
} }
} }
@ -30,7 +33,19 @@ impl Response {
self.message.parse().map_err(|e| LibError::InvalidMime(e)) self.message.parse().map_err(|e| LibError::InvalidMime(e))
} }
pub fn body(self: &mut Self) -> &mut BodyStream { pub fn stream(self: &mut Self) -> &mut BodyStream {
&mut self.body &mut self.stream
}
pub async fn bytes(self: &mut Self) -> Result<Bytes, LibError> {
let mut buf = Vec::new();
self.stream.read_to_end(&mut buf).await?;
Ok(Bytes::from(buf))
}
pub async fn text(self: &mut Self) -> Result<String, LibError> {
let mut buf = String::new();
self.stream.read_to_string(&mut buf).await?;
Ok(buf)
} }
} }