Compare commits

...

2 commits

3 changed files with 26 additions and 9 deletions

9
Cargo.lock generated
View file

@ -49,9 +49,9 @@ dependencies = [
[[package]]
name = "bytes"
version = "1.6.1"
version = "1.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952"
checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50"
[[package]]
name = "cc"
@ -160,9 +160,9 @@ dependencies = [
[[package]]
name = "indexmap"
version = "2.2.6"
version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0"
dependencies = [
"equivalent",
"hashbrown",
@ -414,6 +414,7 @@ name = "tokio-gemini"
version = "0.1.0"
dependencies = [
"base64ct",
"bytes",
"mime",
"num_enum",
"sha2",

View file

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

View file

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