chia-node 0.4.0

An API wrapper for Chia node daemons
Documentation
use std::path::Path;

use chrono::DateTime;
use chrono::NaiveDateTime;
use chrono::Utc;
use reqwest::Identity;
use serde::de::Deserializer;
use serde::de::Deserialize;
use tokio::fs::read;

use crate::Error;

pub(crate) async fn load_pem_pair(key: impl AsRef<Path>, cert: impl AsRef<Path>) -> Result<Identity, Error> {
	let mut buf = read(key.as_ref()).await?;
	buf.append(&mut read(cert.as_ref()).await?);
	Ok(Identity::from_pem(&buf)?)
}

pub(crate) fn deserialize_optional_timestamp<'de, D: Deserializer<'de>>(d: D) -> Result<Option<DateTime<Utc>>, D::Error> {
	match Option::<i64>::deserialize(d)? {
		Some(ts) => Ok(Some(DateTime::<Utc>::from_utc(NaiveDateTime::from_timestamp(ts, 0), Utc))),
		None => Ok(None)
	}
}