use actix_web::{get, HttpResponse, Responder};
use serde::Deserialize;
use solana_sdk::pubkey::Pubkey;
use std::str::FromStr;
pub fn env(var: &str) -> String {
std::env::var(var).unwrap_or_else(|_| panic!("{} env var not set", var))
}
pub fn lamports_to_sol(lamports: u64) -> f64 {
lamports as f64 / 1000000000.0
}
pub fn sol_to_lamports(sol: f64) -> u64 {
(sol * 1000000000.0) as u64
}
#[get("/healthz")]
pub async fn healthz() -> impl Responder {
HttpResponse::Ok().body("im ok")
}
pub fn pubkey_to_string<S>(
pubkey: &Pubkey,
serializer: S,
) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
serializer.serialize_str(&pubkey.to_string())
}
pub fn string_to_pubkey<'de, D>(deserializer: D) -> Result<Pubkey, D::Error>
where
D: serde::Deserializer<'de>,
{
let s = String::deserialize(deserializer)?;
Pubkey::from_str(&s).map_err(serde::de::Error::custom)
}
pub fn max(a: f64, b: f64) -> f64 {
if a > b {
a
} else {
b
}
}
pub fn string_to_u64<'de, D>(deserializer: D) -> Result<u64, D::Error>
where
D: serde::Deserializer<'de>,
{
let s: String = Deserialize::deserialize(deserializer)?;
s.parse().map_err(serde::de::Error::custom)
}