exceptionless 0.1.0

Rust client for Exceptionless tracking errors, log messages, and feature usage events
Documentation
use serde_json::Value;

use crate::wire::{error::ErrorPayload, event as wire_event};

#[derive(Debug, Clone, PartialEq)]
pub struct Event {
    inner: wire_event::Event,
}

impl Event {
    pub fn error(error: ErrorPayload) -> Self {
        Self {
            inner: wire_event::Event::error(error),
        }
    }

    pub fn log(message: impl Into<String>) -> Self {
        Self {
            inner: wire_event::Event::log(message),
        }
    }

    pub fn feature_usage(feature_name: impl Into<String>) -> Self {
        Self {
            inner: wire_event::Event::feature_usage(feature_name),
        }
    }

    pub fn event_type(&self) -> &str {
        &self.inner.event_type
    }

    pub fn source(&self) -> Option<&str> {
        self.inner.source.as_deref()
    }

    pub fn message(&self) -> Option<&str> {
        self.inner.message.as_deref()
    }

    pub fn with_source(mut self, source: impl Into<String>) -> Self {
        self.inner = self.inner.with_source(source);
        self
    }

    pub fn with_tag(mut self, tag: impl Into<String>) -> Self {
        self.inner = self.inner.with_tag(tag);
        self
    }

    pub fn with_data(mut self, key: impl Into<String>, value: Value) -> Self {
        self.inner = self.inner.with_data(key, value);
        self
    }

    pub fn with_user_identity(mut self, identity: impl Into<String>) -> Self {
        self.inner = self.inner.with_user_identity(identity);
        self
    }

    pub fn with_version(mut self, version: impl Into<String>) -> Self {
        self.inner = self.inner.with_version(version);
        self
    }

    pub fn with_level(mut self, level: impl AsRef<str>) -> Self {
        self.inner = self.inner.with_level(level);
        self
    }

    pub(crate) fn into_wire(self) -> wire_event::Event {
        self.inner
    }
}