use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct InputObservable {
#[serde(rename = "dataType")]
pub data_type: String,
#[serde(rename = "data", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub data: Option<Option<String>>,
#[serde(rename = "message", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub message: Option<Option<String>>,
#[serde(rename = "startDate", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub start_date: Option<Option<i64>>,
#[serde(rename = "tlp", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub tlp: Option<Option<Tlp>>,
#[serde(rename = "pap", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub pap: Option<Option<Pap>>,
#[serde(rename = "tags", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub tags: Option<Option<Vec<String>>>,
#[serde(rename = "ioc", skip_serializing_if = "Option::is_none")]
pub ioc: Option<bool>,
#[serde(rename = "sighted", skip_serializing_if = "Option::is_none")]
pub sighted: Option<bool>,
#[serde(rename = "sightedAt", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub sighted_at: Option<Option<i64>>,
#[serde(rename = "ignoreSimilarity", skip_serializing_if = "Option::is_none")]
pub ignore_similarity: Option<bool>,
#[serde(rename = "isZip", skip_serializing_if = "Option::is_none")]
pub is_zip: Option<bool>,
#[serde(rename = "zipPassword", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub zip_password: Option<Option<String>>,
#[serde(rename = "attachment", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub attachment: Option<Option<String>>,
}
impl InputObservable {
pub fn new(data_type: String) -> InputObservable {
InputObservable {
data_type,
data: None,
message: None,
start_date: None,
tlp: None,
pap: None,
tags: None,
ioc: None,
sighted: None,
sighted_at: None,
ignore_similarity: None,
is_zip: None,
zip_password: None,
attachment: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Tlp {
#[serde(rename = "0")]
Variant0,
#[serde(rename = "1")]
Variant1,
#[serde(rename = "2")]
Variant2,
#[serde(rename = "3")]
Variant3,
#[serde(rename = "4")]
Variant4,
}
impl Default for Tlp {
fn default() -> Tlp {
Self::Variant0
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Pap {
#[serde(rename = "0")]
Variant0,
#[serde(rename = "1")]
Variant1,
#[serde(rename = "2")]
Variant2,
#[serde(rename = "3")]
Variant3,
}
impl Default for Pap {
fn default() -> Pap {
Self::Variant0
}
}