cloud_dns/api/
projects.rs

1use serde::{Deserialize, Serialize};
2
3use crate::{DnsClient, Result};
4
5#[derive(Serialize, Deserialize)]
6#[serde(rename_all = "camelCase")]
7pub struct Project {
8    pub kind: String, // "dns#project"
9    pub number: u64,
10    pub id: String,
11    pub quota: Quota,
12}
13
14#[derive(Serialize, Deserialize)]
15#[serde(rename_all = "camelCase")]
16pub struct Quota {
17    pub kind: String, // "dns#quota"
18    pub managed_zones: i64,
19    pub rrsets_per_managed_zone: i64,
20    pub rrset_additions_per_change: i64,
21    pub rrset_deletions_per_change: i64,
22    pub total_rrdata_size_per_change: i64,
23    pub resource_records_per_rrset: i64,
24    pub dns_keys_per_managed_zone: i64,
25    pub whitelisted_key_specs: Vec<WhitelistedKeySpec>,
26    pub networks_per_managed_zone: i64,
27    pub managed_zones_per_network: i64,
28    pub policies: i64,
29    pub networks_per_policy: i64,
30    pub target_name_servers_per_policy: i64,
31    pub target_name_servers_per_managed_zone: i64,
32}
33
34#[derive(Serialize, Deserialize)]
35#[serde(rename_all = "camelCase")]
36pub struct WhitelistedKeySpec {
37    pub kind: String, // "dns#dnsKeySpec"
38    pub key_type: String,
39    pub algorithm: String,
40    pub key_length: u64,
41}
42
43pub struct ProjectsHandler<'client> {
44    client: &'client DnsClient,
45}
46
47impl<'client> ProjectsHandler<'client> {
48    pub(crate) fn new(client: &'client DnsClient) -> Self {
49        Self { client }
50    }
51
52    pub async fn get(&self) -> Result<Project> {
53        self.client.get("/").await
54    }
55}