dink-sdk 0.3.1

Rust SDK for Dink edge mesh platform — JSON-over-NATS RPC for IoT and edge computing
Documentation
use std::time::Duration;

#[derive(Debug, thiserror::Error)]
pub enum DinkError {
    #[error("connection error: {0}")]
    Connection(String),
    #[error("auth error: {0}")]
    Auth(String),
    #[error("service error: {service}.{method} - {code}: {message}")]
    Service {
        service: String,
        method: String,
        code: String,
        message: String,
    },
    #[error("timeout after {0:?}")]
    Timeout(Duration),
    #[error("config error: {0}")]
    Config(String),
    #[error("webhook error: {0}")]
    Webhook(String),
    #[error("stream closed")]
    StreamClosed,
    #[error("unknown method: {0}")]
    UnknownMethod(String),
    #[error("serialization error: {0}")]
    Serialization(#[from] serde_json::Error),
    #[error("nats error: {0}")]
    Nats(String),
}

impl From<async_nats::Error> for DinkError {
    fn from(e: async_nats::Error) -> Self {
        DinkError::Nats(e.to_string())
    }
}

impl From<async_nats::RequestError> for DinkError {
    fn from(e: async_nats::RequestError) -> Self {
        DinkError::Nats(e.to_string())
    }
}

impl From<async_nats::PublishError> for DinkError {
    fn from(e: async_nats::PublishError) -> Self {
        DinkError::Nats(e.to_string())
    }
}

impl From<async_nats::SubscribeError> for DinkError {
    fn from(e: async_nats::SubscribeError) -> Self {
        DinkError::Nats(e.to_string())
    }
}

pub type Result<T> = std::result::Result<T, DinkError>;