1pub mod id;
2#[derive(Debug, Clone)]
3pub struct PluginsClient<T> {
4 client: T,
5 path: String,
6}
7impl<T> PluginsClient<T>
8where
9 T: crate::client::Client,
10{
11 pub fn new(client: T, parent_path: &str) -> Self {
12 Self {
13 client,
14 path: format!("{}{}", parent_path, "/plugins"),
15 }
16 }
17}
18impl<T> PluginsClient<T>
19where
20 T: crate::client::Client,
21{
22 #[doc = "ACME plugin index."]
23 #[doc = ""]
24 #[doc = "Permission check: perm(\"/\", [\"Sys.Modify\"])"]
25 pub async fn get(&self, params: GetParams) -> Result<Vec<GetOutputItems>, T::Error> {
26 let path = self.path.to_string();
27 let optional_vec: Option<Vec<GetOutputItems>> = self.client.get(&path, ¶ms).await?;
28 Ok(optional_vec.unwrap_or_default())
29 }
30}
31impl<T> PluginsClient<T>
32where
33 T: crate::client::Client,
34{
35 #[doc = "Add ACME plugin configuration."]
36 #[doc = ""]
37 #[doc = "Permission check: perm(\"/\", [\"Sys.Modify\"])"]
38 pub async fn post(&self, params: PostParams) -> Result<(), T::Error> {
39 let path = self.path.to_string();
40 self.client.post(&path, ¶ms).await
41 }
42}
43impl GetOutputItems {
44 pub fn new(plugin: String, ty: Type) -> Self {
45 Self {
46 plugin,
47 ty,
48 api: ::std::default::Default::default(),
49 data: ::std::default::Default::default(),
50 digest: ::std::default::Default::default(),
51 disable: ::std::default::Default::default(),
52 nodes: ::std::default::Default::default(),
53 validation_delay: ::std::default::Default::default(),
54 additional_properties: ::std::default::Default::default(),
55 }
56 }
57}
58#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize)]
59pub struct GetOutputItems {
60 #[serde(skip_serializing_if = "Option::is_none", default)]
61 #[doc = "API plugin name"]
62 #[doc = ""]
63 pub api: Option<Api>,
64 #[serde(skip_serializing_if = "Option::is_none", default)]
65 #[doc = "DNS plugin data. (base64 encoded)"]
66 #[doc = ""]
67 pub data: Option<String>,
68 #[serde(skip_serializing_if = "Option::is_none", default)]
69 #[doc = "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications."]
70 #[doc = ""]
71 pub digest: Option<DigestStr>,
72 #[serde(
73 serialize_with = "crate::types::serialize_bool_optional",
74 deserialize_with = "crate::types::deserialize_bool_optional"
75 )]
76 #[serde(skip_serializing_if = "Option::is_none", default)]
77 #[doc = "Flag to disable the config."]
78 #[doc = ""]
79 pub disable: Option<bool>,
80 #[serde(skip_serializing_if = "Option::is_none", default)]
81 #[doc = "List of cluster node names."]
82 #[doc = ""]
83 pub nodes: Option<String>,
84 #[doc = "Unique identifier for ACME plugin instance."]
85 #[doc = ""]
86 pub plugin: String,
87 #[serde(rename = "type")]
88 #[doc = "ACME challenge type."]
89 #[doc = ""]
90 pub ty: Type,
91 #[serde(rename = "validation-delay")]
92 #[serde(skip_serializing_if = "Option::is_none", default)]
93 #[doc = "Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records."]
94 #[doc = ""]
95 pub validation_delay: Option<ValidationDelayInt>,
96 #[serde(
97 flatten,
98 default,
99 skip_serializing_if = "::std::collections::HashMap::is_empty"
100 )]
101 pub additional_properties: ::std::collections::HashMap<String, ::serde_json::Value>,
102}
103#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize, Default)]
104pub struct GetParams {
105 #[serde(rename = "type")]
106 #[serde(skip_serializing_if = "Option::is_none", default)]
107 #[doc = "Only list ACME plugins of a specific type"]
108 #[doc = ""]
109 pub ty: Option<Type>,
110 #[serde(
111 flatten,
112 default,
113 skip_serializing_if = "::std::collections::HashMap::is_empty"
114 )]
115 pub additional_properties: ::std::collections::HashMap<String, ::serde_json::Value>,
116}
117impl PostParams {
118 pub fn new(id: String, ty: Type) -> Self {
119 Self {
120 id,
121 ty,
122 api: ::std::default::Default::default(),
123 data: ::std::default::Default::default(),
124 disable: ::std::default::Default::default(),
125 nodes: ::std::default::Default::default(),
126 validation_delay: ::std::default::Default::default(),
127 additional_properties: ::std::default::Default::default(),
128 }
129 }
130}
131#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize)]
132pub struct PostParams {
133 #[serde(skip_serializing_if = "Option::is_none", default)]
134 #[doc = "API plugin name"]
135 #[doc = ""]
136 pub api: Option<Api>,
137 #[serde(skip_serializing_if = "Option::is_none", default)]
138 #[doc = "DNS plugin data. (base64 encoded)"]
139 #[doc = ""]
140 pub data: Option<String>,
141 #[serde(
142 serialize_with = "crate::types::serialize_bool_optional",
143 deserialize_with = "crate::types::deserialize_bool_optional"
144 )]
145 #[serde(skip_serializing_if = "Option::is_none", default)]
146 #[doc = "Flag to disable the config."]
147 #[doc = ""]
148 pub disable: Option<bool>,
149 #[doc = "ACME Plugin ID name"]
150 #[doc = ""]
151 pub id: String,
152 #[serde(skip_serializing_if = "Option::is_none", default)]
153 #[doc = "List of cluster node names."]
154 #[doc = ""]
155 pub nodes: Option<String>,
156 #[serde(rename = "type")]
157 #[doc = "ACME challenge type."]
158 #[doc = ""]
159 pub ty: Type,
160 #[serde(rename = "validation-delay")]
161 #[serde(skip_serializing_if = "Option::is_none", default)]
162 #[doc = "Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records."]
163 #[doc = ""]
164 pub validation_delay: Option<ValidationDelayInt>,
165 #[serde(
166 flatten,
167 default,
168 skip_serializing_if = "::std::collections::HashMap::is_empty"
169 )]
170 pub additional_properties: ::std::collections::HashMap<String, ::serde_json::Value>,
171}
172#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize, PartialEq)]
173#[doc = "API plugin name"]
174#[doc = ""]
175pub enum Api {
176 #[serde(rename = "1984hosting")]
177 _1984hosting,
178 #[serde(rename = "acmedns")]
179 Acmedns,
180 #[serde(rename = "acmeproxy")]
181 Acmeproxy,
182 #[serde(rename = "active24")]
183 Active24,
184 #[serde(rename = "ad")]
185 Ad,
186 #[serde(rename = "ali")]
187 Ali,
188 #[serde(rename = "alviy")]
189 Alviy,
190 #[serde(rename = "anx")]
191 Anx,
192 #[serde(rename = "artfiles")]
193 Artfiles,
194 #[serde(rename = "arvan")]
195 Arvan,
196 #[serde(rename = "aurora")]
197 Aurora,
198 #[serde(rename = "autodns")]
199 Autodns,
200 #[serde(rename = "aws")]
201 Aws,
202 #[serde(rename = "azion")]
203 Azion,
204 #[serde(rename = "azure")]
205 Azure,
206 #[serde(rename = "beget")]
207 Beget,
208 #[serde(rename = "bookmyname")]
209 Bookmyname,
210 #[serde(rename = "bunny")]
211 Bunny,
212 #[serde(rename = "cf")]
213 Cf,
214 #[serde(rename = "clouddns")]
215 Clouddns,
216 #[serde(rename = "cloudns")]
217 Cloudns,
218 #[serde(rename = "cn")]
219 Cn,
220 #[serde(rename = "conoha")]
221 Conoha,
222 #[serde(rename = "constellix")]
223 Constellix,
224 #[serde(rename = "cpanel")]
225 Cpanel,
226 #[serde(rename = "curanet")]
227 Curanet,
228 #[serde(rename = "cyon")]
229 Cyon,
230 #[serde(rename = "da")]
231 Da,
232 #[serde(rename = "ddnss")]
233 Ddnss,
234 #[serde(rename = "desec")]
235 Desec,
236 #[serde(rename = "df")]
237 Df,
238 #[serde(rename = "dgon")]
239 Dgon,
240 #[serde(rename = "dnsexit")]
241 Dnsexit,
242 #[serde(rename = "dnshome")]
243 Dnshome,
244 #[serde(rename = "dnsimple")]
245 Dnsimple,
246 #[serde(rename = "dnsservices")]
247 Dnsservices,
248 #[serde(rename = "doapi")]
249 Doapi,
250 #[serde(rename = "domeneshop")]
251 Domeneshop,
252 #[serde(rename = "dp")]
253 Dp,
254 #[serde(rename = "dpi")]
255 Dpi,
256 #[serde(rename = "dreamhost")]
257 Dreamhost,
258 #[serde(rename = "duckdns")]
259 Duckdns,
260 #[serde(rename = "durabledns")]
261 Durabledns,
262 #[serde(rename = "dyn")]
263 Dyn,
264 #[serde(rename = "dynu")]
265 Dynu,
266 #[serde(rename = "dynv6")]
267 Dynv6,
268 #[serde(rename = "easydns")]
269 Easydns,
270 #[serde(rename = "edgecenter")]
271 Edgecenter,
272 #[serde(rename = "edgedns")]
273 Edgedns,
274 #[serde(rename = "euserv")]
275 Euserv,
276 #[serde(rename = "exoscale")]
277 Exoscale,
278 #[serde(rename = "fornex")]
279 Fornex,
280 #[serde(rename = "freedns")]
281 Freedns,
282 #[serde(rename = "freemyip")]
283 Freemyip,
284 #[serde(rename = "gandi_livedns")]
285 GandiLivedns,
286 #[serde(rename = "gcloud")]
287 Gcloud,
288 #[serde(rename = "gcore")]
289 Gcore,
290 #[serde(rename = "gd")]
291 Gd,
292 #[serde(rename = "geoscaling")]
293 Geoscaling,
294 #[serde(rename = "googledomains")]
295 Googledomains,
296 #[serde(rename = "he")]
297 He,
298 #[serde(rename = "he_ddns")]
299 HeDdns,
300 #[serde(rename = "hetzner")]
301 Hetzner,
302 #[serde(rename = "hexonet")]
303 Hexonet,
304 #[serde(rename = "hostingde")]
305 Hostingde,
306 #[serde(rename = "huaweicloud")]
307 Huaweicloud,
308 #[serde(rename = "infoblox")]
309 Infoblox,
310 #[serde(rename = "infomaniak")]
311 Infomaniak,
312 #[serde(rename = "internetbs")]
313 Internetbs,
314 #[serde(rename = "inwx")]
315 Inwx,
316 #[serde(rename = "ionos")]
317 Ionos,
318 #[serde(rename = "ionos_cloud")]
319 IonosCloud,
320 #[serde(rename = "ipv64")]
321 Ipv64,
322 #[serde(rename = "ispconfig")]
323 Ispconfig,
324 #[serde(rename = "jd")]
325 Jd,
326 #[serde(rename = "joker")]
327 Joker,
328 #[serde(rename = "kappernet")]
329 Kappernet,
330 #[serde(rename = "kas")]
331 Kas,
332 #[serde(rename = "kinghost")]
333 Kinghost,
334 #[serde(rename = "knot")]
335 Knot,
336 #[serde(rename = "la")]
337 La,
338 #[serde(rename = "leaseweb")]
339 Leaseweb,
340 #[serde(rename = "lexicon")]
341 Lexicon,
342 #[serde(rename = "limacity")]
343 Limacity,
344 #[serde(rename = "linode")]
345 Linode,
346 #[serde(rename = "linode_v4")]
347 LinodeV4,
348 #[serde(rename = "loopia")]
349 Loopia,
350 #[serde(rename = "lua")]
351 Lua,
352 #[serde(rename = "maradns")]
353 Maradns,
354 #[serde(rename = "me")]
355 Me,
356 #[serde(rename = "miab")]
357 Miab,
358 #[serde(rename = "mijnhost")]
359 Mijnhost,
360 #[serde(rename = "misaka")]
361 Misaka,
362 #[serde(rename = "myapi")]
363 Myapi,
364 #[serde(rename = "mydevil")]
365 Mydevil,
366 #[serde(rename = "mydnsjp")]
367 Mydnsjp,
368 #[serde(rename = "mythic_beasts")]
369 MythicBeasts,
370 #[serde(rename = "namecheap")]
371 Namecheap,
372 #[serde(rename = "namecom")]
373 Namecom,
374 #[serde(rename = "namesilo")]
375 Namesilo,
376 #[serde(rename = "nanelo")]
377 Nanelo,
378 #[serde(rename = "nederhost")]
379 Nederhost,
380 #[serde(rename = "neodigit")]
381 Neodigit,
382 #[serde(rename = "netcup")]
383 Netcup,
384 #[serde(rename = "netlify")]
385 Netlify,
386 #[serde(rename = "nic")]
387 Nic,
388 #[serde(rename = "njalla")]
389 Njalla,
390 #[serde(rename = "nm")]
391 Nm,
392 #[serde(rename = "nsd")]
393 Nsd,
394 #[serde(rename = "nsone")]
395 Nsone,
396 #[serde(rename = "nsupdate")]
397 Nsupdate,
398 #[serde(rename = "nw")]
399 Nw,
400 #[serde(rename = "oci")]
401 Oci,
402 #[serde(rename = "omglol")]
403 Omglol,
404 #[serde(rename = "one")]
405 One,
406 #[serde(rename = "online")]
407 Online,
408 #[serde(rename = "openprovider")]
409 Openprovider,
410 #[serde(rename = "openstack")]
411 Openstack,
412 #[serde(rename = "opnsense")]
413 Opnsense,
414 #[serde(rename = "ovh")]
415 Ovh,
416 #[serde(rename = "pdns")]
417 Pdns,
418 #[serde(rename = "pleskxml")]
419 Pleskxml,
420 #[serde(rename = "pointhq")]
421 Pointhq,
422 #[serde(rename = "porkbun")]
423 Porkbun,
424 #[serde(rename = "rackcorp")]
425 Rackcorp,
426 #[serde(rename = "rackspace")]
427 Rackspace,
428 #[serde(rename = "rage4")]
429 Rage4,
430 #[serde(rename = "rcode0")]
431 Rcode0,
432 #[serde(rename = "regru")]
433 Regru,
434 #[serde(rename = "scaleway")]
435 Scaleway,
436 #[serde(rename = "schlundtech")]
437 Schlundtech,
438 #[serde(rename = "selectel")]
439 Selectel,
440 #[serde(rename = "selfhost")]
441 Selfhost,
442 #[serde(rename = "servercow")]
443 Servercow,
444 #[serde(rename = "simply")]
445 Simply,
446 #[serde(rename = "technitium")]
447 Technitium,
448 #[serde(rename = "tele3")]
449 Tele3,
450 #[serde(rename = "tencent")]
451 Tencent,
452 #[serde(rename = "timeweb")]
453 Timeweb,
454 #[serde(rename = "transip")]
455 Transip,
456 #[serde(rename = "udr")]
457 Udr,
458 #[serde(rename = "ultra")]
459 Ultra,
460 #[serde(rename = "unoeuro")]
461 Unoeuro,
462 #[serde(rename = "variomedia")]
463 Variomedia,
464 #[serde(rename = "veesp")]
465 Veesp,
466 #[serde(rename = "vercel")]
467 Vercel,
468 #[serde(rename = "vscale")]
469 Vscale,
470 #[serde(rename = "vultr")]
471 Vultr,
472 #[serde(rename = "websupport")]
473 Websupport,
474 #[serde(rename = "west_cn")]
475 WestCn,
476 #[serde(rename = "world4you")]
477 World4you,
478 #[serde(rename = "yandex360")]
479 Yandex360,
480 #[serde(rename = "yc")]
481 Yc,
482 #[serde(rename = "zilore")]
483 Zilore,
484 #[serde(rename = "zone")]
485 Zone,
486 #[serde(rename = "zoneedit")]
487 Zoneedit,
488 #[serde(rename = "zonomi")]
489 Zonomi,
490}
491impl TryFrom<&str> for Api {
492 type Error = String;
493 fn try_from(value: &str) -> Result<Self, <Self as TryFrom<&str>>::Error> {
494 match value {
495 "1984hosting" => Ok(Self::_1984hosting),
496 "acmedns" => Ok(Self::Acmedns),
497 "acmeproxy" => Ok(Self::Acmeproxy),
498 "active24" => Ok(Self::Active24),
499 "ad" => Ok(Self::Ad),
500 "ali" => Ok(Self::Ali),
501 "alviy" => Ok(Self::Alviy),
502 "anx" => Ok(Self::Anx),
503 "artfiles" => Ok(Self::Artfiles),
504 "arvan" => Ok(Self::Arvan),
505 "aurora" => Ok(Self::Aurora),
506 "autodns" => Ok(Self::Autodns),
507 "aws" => Ok(Self::Aws),
508 "azion" => Ok(Self::Azion),
509 "azure" => Ok(Self::Azure),
510 "beget" => Ok(Self::Beget),
511 "bookmyname" => Ok(Self::Bookmyname),
512 "bunny" => Ok(Self::Bunny),
513 "cf" => Ok(Self::Cf),
514 "clouddns" => Ok(Self::Clouddns),
515 "cloudns" => Ok(Self::Cloudns),
516 "cn" => Ok(Self::Cn),
517 "conoha" => Ok(Self::Conoha),
518 "constellix" => Ok(Self::Constellix),
519 "cpanel" => Ok(Self::Cpanel),
520 "curanet" => Ok(Self::Curanet),
521 "cyon" => Ok(Self::Cyon),
522 "da" => Ok(Self::Da),
523 "ddnss" => Ok(Self::Ddnss),
524 "desec" => Ok(Self::Desec),
525 "df" => Ok(Self::Df),
526 "dgon" => Ok(Self::Dgon),
527 "dnsexit" => Ok(Self::Dnsexit),
528 "dnshome" => Ok(Self::Dnshome),
529 "dnsimple" => Ok(Self::Dnsimple),
530 "dnsservices" => Ok(Self::Dnsservices),
531 "doapi" => Ok(Self::Doapi),
532 "domeneshop" => Ok(Self::Domeneshop),
533 "dp" => Ok(Self::Dp),
534 "dpi" => Ok(Self::Dpi),
535 "dreamhost" => Ok(Self::Dreamhost),
536 "duckdns" => Ok(Self::Duckdns),
537 "durabledns" => Ok(Self::Durabledns),
538 "dyn" => Ok(Self::Dyn),
539 "dynu" => Ok(Self::Dynu),
540 "dynv6" => Ok(Self::Dynv6),
541 "easydns" => Ok(Self::Easydns),
542 "edgecenter" => Ok(Self::Edgecenter),
543 "edgedns" => Ok(Self::Edgedns),
544 "euserv" => Ok(Self::Euserv),
545 "exoscale" => Ok(Self::Exoscale),
546 "fornex" => Ok(Self::Fornex),
547 "freedns" => Ok(Self::Freedns),
548 "freemyip" => Ok(Self::Freemyip),
549 "gandi_livedns" => Ok(Self::GandiLivedns),
550 "gcloud" => Ok(Self::Gcloud),
551 "gcore" => Ok(Self::Gcore),
552 "gd" => Ok(Self::Gd),
553 "geoscaling" => Ok(Self::Geoscaling),
554 "googledomains" => Ok(Self::Googledomains),
555 "he" => Ok(Self::He),
556 "he_ddns" => Ok(Self::HeDdns),
557 "hetzner" => Ok(Self::Hetzner),
558 "hexonet" => Ok(Self::Hexonet),
559 "hostingde" => Ok(Self::Hostingde),
560 "huaweicloud" => Ok(Self::Huaweicloud),
561 "infoblox" => Ok(Self::Infoblox),
562 "infomaniak" => Ok(Self::Infomaniak),
563 "internetbs" => Ok(Self::Internetbs),
564 "inwx" => Ok(Self::Inwx),
565 "ionos" => Ok(Self::Ionos),
566 "ionos_cloud" => Ok(Self::IonosCloud),
567 "ipv64" => Ok(Self::Ipv64),
568 "ispconfig" => Ok(Self::Ispconfig),
569 "jd" => Ok(Self::Jd),
570 "joker" => Ok(Self::Joker),
571 "kappernet" => Ok(Self::Kappernet),
572 "kas" => Ok(Self::Kas),
573 "kinghost" => Ok(Self::Kinghost),
574 "knot" => Ok(Self::Knot),
575 "la" => Ok(Self::La),
576 "leaseweb" => Ok(Self::Leaseweb),
577 "lexicon" => Ok(Self::Lexicon),
578 "limacity" => Ok(Self::Limacity),
579 "linode" => Ok(Self::Linode),
580 "linode_v4" => Ok(Self::LinodeV4),
581 "loopia" => Ok(Self::Loopia),
582 "lua" => Ok(Self::Lua),
583 "maradns" => Ok(Self::Maradns),
584 "me" => Ok(Self::Me),
585 "miab" => Ok(Self::Miab),
586 "mijnhost" => Ok(Self::Mijnhost),
587 "misaka" => Ok(Self::Misaka),
588 "myapi" => Ok(Self::Myapi),
589 "mydevil" => Ok(Self::Mydevil),
590 "mydnsjp" => Ok(Self::Mydnsjp),
591 "mythic_beasts" => Ok(Self::MythicBeasts),
592 "namecheap" => Ok(Self::Namecheap),
593 "namecom" => Ok(Self::Namecom),
594 "namesilo" => Ok(Self::Namesilo),
595 "nanelo" => Ok(Self::Nanelo),
596 "nederhost" => Ok(Self::Nederhost),
597 "neodigit" => Ok(Self::Neodigit),
598 "netcup" => Ok(Self::Netcup),
599 "netlify" => Ok(Self::Netlify),
600 "nic" => Ok(Self::Nic),
601 "njalla" => Ok(Self::Njalla),
602 "nm" => Ok(Self::Nm),
603 "nsd" => Ok(Self::Nsd),
604 "nsone" => Ok(Self::Nsone),
605 "nsupdate" => Ok(Self::Nsupdate),
606 "nw" => Ok(Self::Nw),
607 "oci" => Ok(Self::Oci),
608 "omglol" => Ok(Self::Omglol),
609 "one" => Ok(Self::One),
610 "online" => Ok(Self::Online),
611 "openprovider" => Ok(Self::Openprovider),
612 "openstack" => Ok(Self::Openstack),
613 "opnsense" => Ok(Self::Opnsense),
614 "ovh" => Ok(Self::Ovh),
615 "pdns" => Ok(Self::Pdns),
616 "pleskxml" => Ok(Self::Pleskxml),
617 "pointhq" => Ok(Self::Pointhq),
618 "porkbun" => Ok(Self::Porkbun),
619 "rackcorp" => Ok(Self::Rackcorp),
620 "rackspace" => Ok(Self::Rackspace),
621 "rage4" => Ok(Self::Rage4),
622 "rcode0" => Ok(Self::Rcode0),
623 "regru" => Ok(Self::Regru),
624 "scaleway" => Ok(Self::Scaleway),
625 "schlundtech" => Ok(Self::Schlundtech),
626 "selectel" => Ok(Self::Selectel),
627 "selfhost" => Ok(Self::Selfhost),
628 "servercow" => Ok(Self::Servercow),
629 "simply" => Ok(Self::Simply),
630 "technitium" => Ok(Self::Technitium),
631 "tele3" => Ok(Self::Tele3),
632 "tencent" => Ok(Self::Tencent),
633 "timeweb" => Ok(Self::Timeweb),
634 "transip" => Ok(Self::Transip),
635 "udr" => Ok(Self::Udr),
636 "ultra" => Ok(Self::Ultra),
637 "unoeuro" => Ok(Self::Unoeuro),
638 "variomedia" => Ok(Self::Variomedia),
639 "veesp" => Ok(Self::Veesp),
640 "vercel" => Ok(Self::Vercel),
641 "vscale" => Ok(Self::Vscale),
642 "vultr" => Ok(Self::Vultr),
643 "websupport" => Ok(Self::Websupport),
644 "west_cn" => Ok(Self::WestCn),
645 "world4you" => Ok(Self::World4you),
646 "yandex360" => Ok(Self::Yandex360),
647 "yc" => Ok(Self::Yc),
648 "zilore" => Ok(Self::Zilore),
649 "zone" => Ok(Self::Zone),
650 "zoneedit" => Ok(Self::Zoneedit),
651 "zonomi" => Ok(Self::Zonomi),
652 v => Err(format!("Unknown variant {v}")),
653 }
654 }
655}
656#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize, PartialEq)]
657#[doc = "Only list ACME plugins of a specific type"]
658#[doc = ""]
659pub enum Type {
660 #[serde(rename = "dns")]
661 Dns,
662 #[serde(rename = "standalone")]
663 Standalone,
664}
665impl TryFrom<&str> for Type {
666 type Error = String;
667 fn try_from(value: &str) -> Result<Self, <Self as TryFrom<&str>>::Error> {
668 match value {
669 "dns" => Ok(Self::Dns),
670 "standalone" => Ok(Self::Standalone),
671 v => Err(format!("Unknown variant {v}")),
672 }
673 }
674}
675#[derive(Debug, Clone, Copy, PartialEq, PartialOrd)]
676pub struct ValidationDelayInt(i128);
677impl crate::types::bounded_integer::BoundedInteger for ValidationDelayInt {
678 const MIN: Option<i128> = Some(0i128);
679 const MAX: Option<i128> = Some(172800i128);
680 const DEFAULT: Option<i128> = Some(30i128);
681 const TYPE_DESCRIPTION: &'static str = "an integer between 0 and 172800";
682 fn get(&self) -> i128 {
683 self.0
684 }
685 fn new(value: i128) -> Result<Self, crate::types::bounded_integer::BoundedIntegerError> {
686 Self::validate(value)?;
687 Ok(Self(value))
688 }
689}
690impl std::convert::TryFrom<i128> for ValidationDelayInt {
691 type Error = crate::types::bounded_integer::BoundedIntegerError;
692 fn try_from(value: i128) -> Result<Self, Self::Error> {
693 crate::types::bounded_integer::BoundedInteger::new(value)
694 }
695}
696impl ::serde::Serialize for ValidationDelayInt {
697 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
698 where
699 S: ::serde::Serializer,
700 {
701 crate::types::bounded_integer::serialize_bounded_integer(self, serializer)
702 }
703}
704impl<'de> ::serde::Deserialize<'de> for ValidationDelayInt {
705 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
706 where
707 D: ::serde::Deserializer<'de>,
708 {
709 crate::types::bounded_integer::deserialize_bounded_integer(deserializer)
710 }
711}
712#[derive(Debug, Clone, PartialEq, PartialOrd)]
713pub struct DigestStr {
714 value: String,
715}
716impl crate::types::bounded_string::BoundedString for DigestStr {
717 const MIN_LENGTH: Option<usize> = None::<usize>;
718 const MAX_LENGTH: Option<usize> = Some(64usize);
719 const DEFAULT: Option<&'static str> = None::<&'static str>;
720 const PATTERN: Option<&'static str> = None::<&'static str>;
721 const TYPE_DESCRIPTION: &'static str = "a string with length at most 64";
722 fn get_value(&self) -> &str {
723 &self.value
724 }
725 fn new(value: String) -> Result<Self, crate::types::bounded_string::BoundedStringError> {
726 Self::validate(&value)?;
727 Ok(Self { value })
728 }
729}
730impl std::convert::TryFrom<String> for DigestStr {
731 type Error = crate::types::bounded_string::BoundedStringError;
732 fn try_from(value: String) -> Result<Self, Self::Error> {
733 crate::types::bounded_string::BoundedString::new(value)
734 }
735}
736impl ::serde::Serialize for DigestStr {
737 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
738 where
739 S: ::serde::Serializer,
740 {
741 crate::types::bounded_string::serialize_bounded_string(self, serializer)
742 }
743}
744impl<'de> ::serde::Deserialize<'de> for DigestStr {
745 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
746 where
747 D: ::serde::Deserializer<'de>,
748 {
749 crate::types::bounded_string::deserialize_bounded_string(deserializer)
750 }
751}
752impl<T> PluginsClient<T>
753where
754 T: crate::client::Client,
755{
756 pub fn id(&self, id: &str) -> id::IdClient<T> {
757 id::IdClient::<T>::new(self.client.clone(), &self.path, id)
758 }
759}