use anyhow::Result;
use url::Url;
pub struct Gemini {
pub url: Url,
}
impl Gemini {
pub fn from_bytes(buffer: &[u8]) -> Result<Self> {
use crate::Header;
Ok(Self {
url: Url::parse(std::str::from_utf8(buffer.header_bytes()?)?)?,
})
}
pub fn into_bytes(self) -> Vec<u8> {
format!("{}\r\n", self.url).into_bytes()
}
}
#[test]
fn test() {
const REQUEST: &[u8] = "gemini://geminiprotocol.net\r\n".as_bytes();
let request = Gemini::from_bytes(REQUEST).unwrap();
assert_eq!(request.url.as_str(), "gemini://geminiprotocol.net");
assert_eq!(request.into_bytes(), REQUEST);
}