mirror of
https://github.com/YGGverse/ggemini.git
synced 2026-04-02 10:05:36 +00:00
remove deprecated features
This commit is contained in:
parent
1505b6311c
commit
4ee92645ca
4 changed files with 0 additions and 145 deletions
|
|
@ -1,5 +1,4 @@
|
||||||
pub mod certificate;
|
pub mod certificate;
|
||||||
pub mod data; // @TODO deprecated
|
|
||||||
pub mod error;
|
pub mod error;
|
||||||
pub mod failure;
|
pub mod failure;
|
||||||
pub mod input;
|
pub mod input;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
//! Gemini response could have different MIME type for data.
|
|
||||||
//! Use one of components below to parse response according to content type expected.
|
|
||||||
//!
|
|
||||||
//! * MIME type could be detected using `client::response::Meta` parser
|
|
||||||
|
|
||||||
pub mod text;
|
|
||||||
pub use text::Text;
|
|
||||||
|
|
@ -1,113 +0,0 @@
|
||||||
//! Tools for Text-based response
|
|
||||||
|
|
||||||
pub mod error;
|
|
||||||
pub use error::Error;
|
|
||||||
|
|
||||||
// Local dependencies
|
|
||||||
use gio::{
|
|
||||||
prelude::{IOStreamExt, InputStreamExt},
|
|
||||||
Cancellable, IOStream,
|
|
||||||
};
|
|
||||||
use glib::{object::IsA, GString, Priority};
|
|
||||||
|
|
||||||
// Default limits
|
|
||||||
pub const BUFFER_CAPACITY: usize = 0x400; // 1024
|
|
||||||
pub const BUFFER_MAX_SIZE: usize = 0xfffff; // 1M
|
|
||||||
|
|
||||||
/// Container for text-based response data
|
|
||||||
pub struct Text(String);
|
|
||||||
|
|
||||||
impl Default for Text {
|
|
||||||
fn default() -> Self {
|
|
||||||
Self::new()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Text {
|
|
||||||
// Constructors
|
|
||||||
|
|
||||||
/// Create new `Self`
|
|
||||||
pub fn new() -> Self {
|
|
||||||
Self(String::new())
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Create new `Self` from string
|
|
||||||
pub fn from_string(data: &str) -> Self {
|
|
||||||
Self(data.into())
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Create new `Self` from UTF-8 buffer
|
|
||||||
pub fn from_utf8(buffer: &[u8]) -> Result<Self, Error> {
|
|
||||||
match GString::from_utf8(buffer.into()) {
|
|
||||||
Ok(data) => Ok(Self::from_string(&data)),
|
|
||||||
Err(e) => Err(Error::Decode(e)),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Asynchronously create new `Self` from [IOStream](https://docs.gtk.org/gio/class.IOStream.html)
|
|
||||||
pub fn from_stream_async(
|
|
||||||
stream: impl IsA<IOStream>,
|
|
||||||
priority: Priority,
|
|
||||||
cancellable: Cancellable,
|
|
||||||
on_complete: impl FnOnce(Result<Self, Error>) + 'static,
|
|
||||||
) {
|
|
||||||
read_all_from_stream_async(
|
|
||||||
Vec::with_capacity(BUFFER_CAPACITY),
|
|
||||||
stream,
|
|
||||||
cancellable,
|
|
||||||
priority,
|
|
||||||
|result| match result {
|
|
||||||
Ok(buffer) => on_complete(Self::from_utf8(&buffer)),
|
|
||||||
Err(e) => on_complete(Err(e)),
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl std::fmt::Display for Text {
|
|
||||||
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
|
|
||||||
write!(f, "{}", self.0)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Tools
|
|
||||||
|
|
||||||
/// Asynchronously read all bytes from [IOStream](https://docs.gtk.org/gio/class.IOStream.html)
|
|
||||||
///
|
|
||||||
/// Return UTF-8 buffer collected
|
|
||||||
/// * require `IOStream` reference to keep `Connection` active in async thread
|
|
||||||
pub fn read_all_from_stream_async(
|
|
||||||
mut buffer: Vec<u8>,
|
|
||||||
stream: impl IsA<IOStream>,
|
|
||||||
cancelable: Cancellable,
|
|
||||||
priority: Priority,
|
|
||||||
callback: impl FnOnce(Result<Vec<u8>, Error>) + 'static,
|
|
||||||
) {
|
|
||||||
stream.input_stream().read_bytes_async(
|
|
||||||
BUFFER_CAPACITY,
|
|
||||||
priority,
|
|
||||||
Some(&cancelable.clone()),
|
|
||||||
move |result| match result {
|
|
||||||
Ok(bytes) => {
|
|
||||||
// No bytes were read, end of stream
|
|
||||||
if bytes.len() == 0 {
|
|
||||||
return callback(Ok(buffer));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Validate overflow
|
|
||||||
if buffer.len() + bytes.len() > BUFFER_MAX_SIZE {
|
|
||||||
return callback(Err(Error::BufferOverflow));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Save chunks to buffer
|
|
||||||
for &byte in bytes.iter() {
|
|
||||||
buffer.push(byte);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Continue bytes reading
|
|
||||||
read_all_from_stream_async(buffer, stream, cancelable, priority, callback);
|
|
||||||
}
|
|
||||||
Err(e) => callback(Err(Error::InputStream(e))),
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
use std::fmt::{Display, Formatter, Result};
|
|
||||||
|
|
||||||
#[derive(Debug)]
|
|
||||||
pub enum Error {
|
|
||||||
BufferOverflow,
|
|
||||||
Decode(std::string::FromUtf8Error),
|
|
||||||
InputStream(glib::Error),
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Display for Error {
|
|
||||||
fn fmt(&self, f: &mut Formatter) -> Result {
|
|
||||||
match self {
|
|
||||||
Self::BufferOverflow => {
|
|
||||||
write!(f, "Buffer overflow")
|
|
||||||
}
|
|
||||||
Self::Decode(e) => {
|
|
||||||
write!(f, "Decode error: {e}")
|
|
||||||
}
|
|
||||||
Self::InputStream(e) => {
|
|
||||||
write!(f, "Input stream read error: {e}")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue