2022-01-03 18:42:24 -05:00
|
|
|
use crate::config;
|
|
|
|
/// Relay Info
|
|
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
|
|
|
|
const CARGO_PKG_VERSION: Option<&'static str> = option_env!("CARGO_PKG_VERSION");
|
|
|
|
|
|
|
|
#[derive(Debug, Serialize, Deserialize)]
|
|
|
|
#[allow(unused)]
|
|
|
|
pub struct RelayInfo {
|
2022-01-03 22:03:30 -05:00
|
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
|
|
pub id: Option<String>,
|
2022-01-03 18:42:24 -05:00
|
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
|
|
pub name: Option<String>,
|
|
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
2022-01-03 22:03:30 -05:00
|
|
|
pub description: Option<String>,
|
2022-01-03 18:42:24 -05:00
|
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
|
|
pub pubkey: Option<String>,
|
|
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
|
|
pub email: Option<String>,
|
|
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
2022-01-03 22:03:30 -05:00
|
|
|
pub supported_nips: Option<Vec<i64>>,
|
2022-01-03 18:42:24 -05:00
|
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
|
|
pub software: Option<String>,
|
|
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
|
|
pub version: Option<String>,
|
|
|
|
}
|
|
|
|
|
|
|
|
impl Default for RelayInfo {
|
|
|
|
fn default() -> Self {
|
|
|
|
RelayInfo {
|
2022-01-03 22:03:30 -05:00
|
|
|
id: None,
|
2022-01-03 18:42:24 -05:00
|
|
|
name: None,
|
2022-01-03 22:03:30 -05:00
|
|
|
description: None,
|
2022-01-03 18:42:24 -05:00
|
|
|
pubkey: None,
|
|
|
|
email: None,
|
2022-01-03 22:03:30 -05:00
|
|
|
supported_nips: Some(vec![1]),
|
2022-01-03 18:42:24 -05:00
|
|
|
software: Some("https://git.sr.ht/~gheartsfield/nostr-rs-relay".to_owned()),
|
|
|
|
version: CARGO_PKG_VERSION.map(|x| x.to_owned()),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/// Convert an Info struct into Relay Info json string
|
|
|
|
pub fn relay_info_json(info: &config::Info) -> String {
|
|
|
|
// get a default RelayInfo
|
|
|
|
let mut r = RelayInfo::default();
|
|
|
|
// update fields from Info, if present
|
2022-01-03 22:03:30 -05:00
|
|
|
r.id = info.relay_url.clone();
|
2022-01-03 18:42:24 -05:00
|
|
|
r.name = info.name.clone();
|
2022-01-03 22:03:30 -05:00
|
|
|
r.description = info.description.clone();
|
2022-01-03 18:42:24 -05:00
|
|
|
r.pubkey = info.pubkey.clone();
|
|
|
|
r.email = info.email.clone();
|
|
|
|
r.to_json()
|
|
|
|
}
|
|
|
|
|
|
|
|
impl RelayInfo {
|
|
|
|
pub fn to_json(self) -> String {
|
2022-01-03 22:03:30 -05:00
|
|
|
serde_json::to_string_pretty(&self).unwrap()
|
2022-01-03 18:42:24 -05:00
|
|
|
}
|
|
|
|
}
|