use crate::{
events::{self, ApiVersion, Event, EventOptions},
AbuseType,
};
use std::time::Duration;
#[derive(Debug)]
pub struct LabelProperties {
pub is_fraud: bool,
pub abuse_type: AbuseType,
pub description: Option<String>,
pub source: Option<String>,
pub analyst: Option<String>,
pub extra: Option<serde_json::Value>,
}
impl From<LabelProperties> for Event {
fn from(props: LabelProperties) -> Self {
let LabelProperties {
is_fraud,
abuse_type,
description,
source,
analyst,
extra,
} = props;
Event::Label {
is_fraud,
abuse_type,
properties: events::LabelProperties {
description,
source,
analyst,
extra,
},
}
}
}
#[derive(Debug, Default)]
pub struct LabelOptions {
pub timeout: Option<Duration>,
pub api_key: Option<String>,
pub version: Option<ApiVersion>,
}
impl From<(LabelOptions, &str)> for EventOptions {
fn from((opts, user_id): (LabelOptions, &str)) -> Self {
let LabelOptions {
api_key,
timeout,
version,
} = opts;
EventOptions {
api_key,
timeout,
version,
path: Some(format!("users/{}/labels", user_id).into()),
..Default::default()
}
}
}