enigma-node-client 0.0.1

HTTP client for Enigma node services (registry/resolve/announce/sync/nodes) using canonical enigma-node-types.
Documentation
use enigma_node_registry::{start, RegistryConfig, RunningServer};
use enigma_node_types::{NodeInfo, PublicIdentity, UserId};

use crate::{NodeClient, NodeClientConfig};

pub(crate) fn sample_identity(username: &str) -> PublicIdentity {
    let user_id = UserId::from_username(username).expect("valid user id");
    PublicIdentity {
        user_id,
        username_hint: Some(username.to_string()),
        signing_public_key: vec![1, 2, 3],
        encryption_public_key: vec![4, 5, 6],
        signature: vec![7, 8, 9],
        created_at_ms: 1,
    }
}

pub(crate) fn sample_node() -> NodeInfo {
    NodeInfo {
        base_url: "https://node.example.com".to_string(),
    }
}

pub(crate) async fn spawn_server() -> RunningServer {
    start(RegistryConfig::default(), vec![sample_node()])
        .await
        .expect("server start")
}

pub(crate) fn client_for(base_url: &str) -> NodeClient {
    NodeClient::new(base_url.to_string(), NodeClientConfig::default()).expect("client")
}

pub(crate) async fn stop_server(server: RunningServer) {
    let RunningServer {
        shutdown,
        handle,
        ..
    } = server;
    let _ = shutdown.send(());
    let _ = handle.await;
}