1// @generated by jacquard-lexicon. DO NOT EDIT.
2//
3// Lexicon: tools.ozone.safelink.updateRule
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 UpdateRule<'a> {
22 #[serde(borrow)]
23 pub action: crate::tools_ozone::safelink::ActionType<'a>,
24 /// Optional comment about the update
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 /// Optional DID to credit as the creator. Only respected for admin_token authentication.
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 update the rule for
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 UpdateRuleOutput<'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 UpdateRuleError<'a> {
83 /// No active rule found for this URL/domain
84 #[serde(rename = "RuleNotFound")]
85 RuleNotFound(std::option::Option<String>),
86}
87
88impl std::fmt::Display for UpdateRuleError<'_> {
89 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
90 match self {
91 Self::RuleNotFound(msg) => {
92 write!(f, "RuleNotFound")?;
93 if let Some(msg) = msg {
94 write!(f, ": {}", msg)?;
95 }
96 Ok(())
97 }
98 Self::Unknown(err) => write!(f, "Unknown error: {:?}", err),
99 }
100 }
101}
102
103///Response type for
104///tools.ozone.safelink.updateRule
105pub struct UpdateRuleResponse;
106impl jacquard_common::xrpc::XrpcResp for UpdateRuleResponse {
107 const NSID: &'static str = "tools.ozone.safelink.updateRule";
108 const ENCODING: &'static str = "application/json";
109 type Output<'de> = UpdateRuleOutput<'de>;
110 type Err<'de> = UpdateRuleError<'de>;
111}
112
113impl<'a> jacquard_common::xrpc::XrpcRequest for UpdateRule<'a> {
114 const NSID: &'static str = "tools.ozone.safelink.updateRule";
115 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure(
116 "application/json",
117 );
118 type Response = UpdateRuleResponse;
119}
120
121///Endpoint type for
122///tools.ozone.safelink.updateRule
123pub struct UpdateRuleRequest;
124impl jacquard_common::xrpc::XrpcEndpoint for UpdateRuleRequest {
125 const PATH: &'static str = "/xrpc/tools.ozone.safelink.updateRule";
126 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure(
127 "application/json",
128 );
129 type Request<'de> = UpdateRule<'de>;
130 type Response = UpdateRuleResponse;
131}