👕 refactor (ptth_relay): use the new blake3 deserializer
parent
9bc4b57058
commit
b43106393a
|
@ -23,6 +23,16 @@ use crate::errors::ConfigError;
|
|||
|
||||
pub struct BlakeHashWrapper (blake3::Hash);
|
||||
|
||||
impl BlakeHashWrapper {
|
||||
pub fn from_key (bytes: &[u8]) -> Self {
|
||||
Self (blake3::hash (bytes))
|
||||
}
|
||||
|
||||
pub fn encode_base64 (&self) -> String {
|
||||
base64::encode (self.as_bytes ())
|
||||
}
|
||||
}
|
||||
|
||||
impl Deref for BlakeHashWrapper {
|
||||
type Target = blake3::Hash;
|
||||
|
||||
|
@ -69,7 +79,7 @@ pub mod file {
|
|||
#[derive (Deserialize)]
|
||||
pub struct Server {
|
||||
pub name: String,
|
||||
pub tripcode: String,
|
||||
pub tripcode: BlakeHashWrapper,
|
||||
pub display_name: Option <String>,
|
||||
}
|
||||
|
||||
|
@ -110,13 +120,8 @@ impl TryFrom <file::Server> for Server {
|
|||
type Error = ConfigError;
|
||||
|
||||
fn try_from (f: file::Server) -> Result <Self, Self::Error> {
|
||||
let bytes: Vec <u8> = base64::decode (f.tripcode)?;
|
||||
let bytes: [u8; 32] = (&bytes [..]).try_into ().map_err (|_| ConfigError::TripcodeBadLength)?;
|
||||
|
||||
let tripcode = blake3::Hash::from (bytes);
|
||||
|
||||
Ok (Self {
|
||||
tripcode,
|
||||
tripcode: *f.tripcode,
|
||||
display_name: f.display_name,
|
||||
})
|
||||
}
|
||||
|
|
|
@ -18,6 +18,8 @@ fn end_to_end () {
|
|||
use reqwest::Client;
|
||||
use tracing::{debug, info};
|
||||
|
||||
use ptth_relay::config::BlakeHashWrapper;
|
||||
|
||||
// Prefer this form for tests, since all tests share one process
|
||||
// and we don't care if another test already installed a subscriber.
|
||||
|
||||
|
@ -28,8 +30,8 @@ fn end_to_end () {
|
|||
rt.block_on (async {
|
||||
let server_name = "aliens_wildland";
|
||||
let api_key = "AnacondaHardcoverGrannyUnlatchLankinessMutate";
|
||||
let tripcode = base64::encode (blake3::hash (api_key.as_bytes ()).as_bytes ());
|
||||
debug! ("Relay is expecting tripcode {}", tripcode);
|
||||
let tripcode = BlakeHashWrapper::from_key (api_key.as_bytes ());
|
||||
debug! ("Relay is expecting tripcode {}", tripcode.encode_base64 ());
|
||||
let config_file = ptth_relay::config::file::Config {
|
||||
port: None,
|
||||
servers: vec! [
|
||||
|
|
Loading…
Reference in New Issue