refine serde, make it default
Signed-off-by: Christine Dodrill <me@christine.website>
This commit is contained in:
parent
916afc8852
commit
e7ccdd485e
|
@ -23,9 +23,8 @@ pub(crate) fn state_file(name: &str) -> Option<PathBuf> {
|
||||||
/// IDs, however in practice the most read value is the private ID.
|
/// IDs, however in practice the most read value is the private ID.
|
||||||
#[derive(Serialize, Deserialize, Eq, PartialEq, Debug)]
|
#[derive(Serialize, Deserialize, Eq, PartialEq, Debug)]
|
||||||
pub struct Config {
|
pub struct Config {
|
||||||
// TODO(Xe): make this use a custom serde format, see https://serde.rs/custom-date-format.html
|
private_id: logtail::PrivateID,
|
||||||
private_id: String,
|
public_id: logtail::PublicID,
|
||||||
public_id: String,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Config {
|
impl Config {
|
||||||
|
@ -35,14 +34,19 @@ impl Config {
|
||||||
let private_id = logtail::PrivateID::new();
|
let private_id = logtail::PrivateID::new();
|
||||||
|
|
||||||
Self {
|
Self {
|
||||||
private_id: private_id.as_hex(),
|
public_id: private_id.as_public(),
|
||||||
public_id: private_id.as_public().as_hex(),
|
private_id,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the logtail private ID for this Config.
|
/// Returns the logtail private ID for this Config.
|
||||||
pub fn private_id(self) -> logtail::PrivateID {
|
pub fn private_id(self) -> logtail::PrivateID {
|
||||||
logtail::PrivateID::from_hex(self.private_id).unwrap()
|
self.private_id
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns the logtail public ID for this Config.
|
||||||
|
pub fn public_id(self) -> logtail::PublicID {
|
||||||
|
self.public_id
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Loads the relevant configuration file off disk, and creates a new one if it
|
/// Loads the relevant configuration file off disk, and creates a new one if it
|
||||||
|
|
|
@ -6,15 +6,8 @@ edition = "2018"
|
||||||
# See more keys and their definitions at
|
# See more keys and their definitions at
|
||||||
# https://doc.rust-lang.org/cargo/reference/manifest.html
|
# https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
[features]
|
|
||||||
default = [ "serde-ser" ]
|
|
||||||
serde-ser = [ "serde" ]
|
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
hex = "0.4"
|
hex = "0.4"
|
||||||
rand = "0"
|
rand = "0"
|
||||||
|
serde = "1"
|
||||||
sha2 = "0.9"
|
sha2 = "0.9"
|
||||||
|
|
||||||
[dependencies.serde]
|
|
||||||
version = "1"
|
|
||||||
optional = true
|
|
||||||
|
|
|
@ -10,7 +10,6 @@ use std::fmt;
|
||||||
#[derive(Clone, PartialEq, Eq)]
|
#[derive(Clone, PartialEq, Eq)]
|
||||||
pub struct PrivateID([u8; SHA256_SIZE]);
|
pub struct PrivateID([u8; SHA256_SIZE]);
|
||||||
|
|
||||||
#[cfg(feature = "serde-ser")]
|
|
||||||
mod serde;
|
mod serde;
|
||||||
|
|
||||||
impl PrivateID {
|
impl PrivateID {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
use super::{PrivateID, PublicID};
|
use super::{PrivateID, PublicID};
|
||||||
use serde::{de, Serialize, Serializer};
|
use serde::{de, Deserialize, Deserializer, Serialize, Serializer};
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
|
||||||
impl Serialize for PrivateID {
|
impl Serialize for PrivateID {
|
||||||
|
@ -34,6 +34,15 @@ impl<'de> de::Visitor<'de> for PrivateIDVisitor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<'de> Deserialize<'de> for PrivateID {
|
||||||
|
fn deserialize<D>(deserializer: D) -> Result<PrivateID, D::Error>
|
||||||
|
where
|
||||||
|
D: Deserializer<'de>,
|
||||||
|
{
|
||||||
|
deserializer.deserialize_str(PrivateIDVisitor)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Serialize for PublicID {
|
impl Serialize for PublicID {
|
||||||
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||||
where
|
where
|
||||||
|
@ -65,3 +74,12 @@ impl<'de> de::Visitor<'de> for PublicIDVisitor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<'de> Deserialize<'de> for PublicID {
|
||||||
|
fn deserialize<D>(deserializer: D) -> Result<PublicID, D::Error>
|
||||||
|
where
|
||||||
|
D: Deserializer<'de>,
|
||||||
|
{
|
||||||
|
deserializer.deserialize_str(PublicIDVisitor)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue