1// @generated by jacquard-lexicon. DO NOT EDIT.
2//
3// Lexicon: tools.ozone.safelink.addRule
4//
5// This file was automatically generated from Lexicon schemas.
6// Any manual changes will be overwritten on the next regeneration.
7
8#[jacquard_derive::lexicon]
9#[derive(
10 serde::Serialize,
11 serde::Deserialize,
12 Debug,
13 Clone,
14 PartialEq,
15 Eq,
16 bon::Builder,
17 jacquard_derive::IntoStatic
18)]
19#[serde(rename_all = "camelCase")]
20#[builder(start_fn = new)]
21pub struct AddRule<'a> {
22 #[serde(borrow)]
23 pub action: crate::tools_ozone::safelink::ActionType<'a>,
24 /// Optional comment about the decision
25 #[serde(skip_serializing_if = "std::option::Option::is_none")]
26 #[builder(into)]
27 #[serde(borrow)]
28 pub comment: Option<jacquard_common::CowStr<'a>>,
29 /// Author DID. Only respected when using admin auth
30 #[serde(skip_serializing_if = "std::option::Option::is_none")]
31 #[builder(into)]
32 #[serde(borrow)]
33 pub created_by: Option<jacquard_common::types::string::Did<'a>>,
34 #[serde(borrow)]
35 pub pattern: crate::tools_ozone::safelink::PatternType<'a>,
36 #[serde(borrow)]
37 pub reason: crate::tools_ozone::safelink::ReasonType<'a>,
38 /// The URL or domain to apply the rule to
39 #[serde(borrow)]
40 #[builder(into)]
41 pub url: jacquard_common::CowStr<'a>,
42 #[serde(flatten)]
43 #[serde(borrow)]
44 #[builder(default)]
45 pub extra_data: ::std::collections::BTreeMap<
46 ::jacquard_common::smol_str::SmolStr,
47 ::jacquard_common::types::value::Data<'a>,
48 >,
49}
50
51#[jacquard_derive::lexicon]
52#[derive(
53 serde::Serialize,
54 serde::Deserialize,
55 Debug,
56 Clone,
57 PartialEq,
58 Eq,
59 jacquard_derive::IntoStatic
60)]
61#[serde(rename_all = "camelCase")]
62pub struct AddRuleOutput<'a> {
63 #[serde(flatten)]
64 #[serde(borrow)]
65 pub value: crate::tools_ozone::safelink::Event<'a>,
66}
67
68#[jacquard_derive::open_union]
69#[derive(
70 serde::Serialize,
71 serde::Deserialize,
72 Debug,
73 Clone,
74 PartialEq,
75 Eq,
76 thiserror::Error,
77 miette::Diagnostic,
78 jacquard_derive::IntoStatic
79)]
80#[serde(tag = "error", content = "message")]
81#[serde(bound(deserialize = "'de: 'a"))]
82pub enum AddRuleError<'a> {
83 /// The provided URL is invalid
84 #[serde(rename = "InvalidUrl")]
85 InvalidUrl(std::option::Option<String>),
86 /// A rule for this URL/domain already exists
87 #[serde(rename = "RuleAlreadyExists")]
88 RuleAlreadyExists(std::option::Option<String>),
89}
90
91impl std::fmt::Display for AddRuleError<'_> {
92 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
93 match self {
94 Self::InvalidUrl(msg) => {
95 write!(f, "InvalidUrl")?;
96 if let Some(msg) = msg {
97 write!(f, ": {}", msg)?;
98 }
99 Ok(())
100 }
101 Self::RuleAlreadyExists(msg) => {
102 write!(f, "RuleAlreadyExists")?;
103 if let Some(msg) = msg {
104 write!(f, ": {}", msg)?;
105 }
106 Ok(())
107 }
108 Self::Unknown(err) => write!(f, "Unknown error: {:?}", err),
109 }
110 }
111}
112
113///Response type for
114///tools.ozone.safelink.addRule
115pub struct AddRuleResponse;
116impl jacquard_common::xrpc::XrpcResp for AddRuleResponse {
117 const NSID: &'static str = "tools.ozone.safelink.addRule";
118 const ENCODING: &'static str = "application/json";
119 type Output<'de> = AddRuleOutput<'de>;
120 type Err<'de> = AddRuleError<'de>;
121}
122
123impl<'a> jacquard_common::xrpc::XrpcRequest for AddRule<'a> {
124 const NSID: &'static str = "tools.ozone.safelink.addRule";
125 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure(
126 "application/json",
127 );
128 type Response = AddRuleResponse;
129}
130
131///Endpoint type for
132///tools.ozone.safelink.addRule
133pub struct AddRuleRequest;
134impl jacquard_common::xrpc::XrpcEndpoint for AddRuleRequest {
135 const PATH: &'static str = "/xrpc/tools.ozone.safelink.addRule";
136 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure(
137 "application/json",
138 );
139 type Request<'de> = AddRule<'de>;
140 type Response = AddRuleResponse;
141}