fastly_api/apis/
domain_research_api.rs

1/*
2 * Fastly API
3 *
4 * Via the Fastly API you can perform any of the operations that are possible within the management console,  including creating services, domains, and backends, configuring rules or uploading your own application code, as well as account operations such as user administration and billing reports. The API is organized into collections of endpoints that allow manipulation of objects related to Fastly services and accounts. For the most accurate and up-to-date API reference content, visit our [Developer Hub](https://www.fastly.com/documentation/reference/api/) 
5 *
6 */
7
8
9use reqwest;
10
11use crate::apis::ResponseContent;
12use super::{Error, configuration};
13
14/// struct for passing parameters to the method [`domain_status`]
15#[derive(Clone, Debug, Default)]
16pub struct DomainStatusParams {
17    pub domain: String,
18    pub scope: Option<String>
19}
20
21/// struct for passing parameters to the method [`suggest_domains`]
22#[derive(Clone, Debug, Default)]
23pub struct SuggestDomainsParams {
24    pub query: String,
25    pub defaults: Option<String>,
26    pub keywords: Option<String>,
27    pub location: Option<String>,
28    pub vendor: Option<String>
29}
30
31
32/// struct for typed errors of method [`domain_status`]
33#[derive(Debug, Clone, Serialize, Deserialize)]
34#[serde(untagged)]
35pub enum DomainStatusError {
36    UnknownValue(serde_json::Value),
37}
38
39/// struct for typed errors of method [`suggest_domains`]
40#[derive(Debug, Clone, Serialize, Deserialize)]
41#[serde(untagged)]
42pub enum SuggestDomainsError {
43    UnknownValue(serde_json::Value),
44}
45
46
47/// The `Status` method checks the availability status of a single domain name.
48pub async fn domain_status(configuration: &mut configuration::Configuration, params: DomainStatusParams) -> Result<crate::models::Status, Error<DomainStatusError>> {
49    let local_var_configuration = configuration;
50
51    // unbox the parameters
52    let domain = params.domain;
53    let scope = params.scope;
54
55
56    let local_var_client = &local_var_configuration.client;
57
58    let local_var_uri_str = format!("{}/domain-management/v1/tools/status", local_var_configuration.base_path);
59    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
60
61    local_var_req_builder = local_var_req_builder.query(&[("domain", &domain.to_string())]);
62    if let Some(ref local_var_str) = scope {
63        local_var_req_builder = local_var_req_builder.query(&[("scope", &local_var_str.to_string())]);
64    }
65    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
66        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
67    }
68    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
69        let local_var_key = local_var_apikey.key.clone();
70        let local_var_value = match local_var_apikey.prefix {
71            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
72            None => local_var_key,
73        };
74        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
75    };
76
77    let local_var_req = local_var_req_builder.build()?;
78    let local_var_resp = local_var_client.execute(local_var_req).await?;
79
80    if "GET" != "GET" && "GET" != "HEAD" {
81      let headers = local_var_resp.headers();
82      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
83          Some(v) => v.to_str().unwrap().parse().unwrap(),
84          None => configuration::DEFAULT_RATELIMIT,
85      };
86      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
87          Some(v) => v.to_str().unwrap().parse().unwrap(),
88          None => 0,
89      };
90    }
91
92    let local_var_status = local_var_resp.status();
93    let local_var_content = local_var_resp.text().await?;
94
95    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
96        serde_json::from_str(&local_var_content).map_err(Error::from)
97    } else {
98        let local_var_entity: Option<DomainStatusError> = serde_json::from_str(&local_var_content).ok();
99        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
100        Err(Error::ResponseError(local_var_error))
101    }
102}
103
104/// The `Suggest` method performs a real-time query of the search term(s) against the [known zone database](http://zonedb.org), making recommendations, stemming, and applying Unicode folding, IDN normalization, registrar supported-zone restrictions, and other refinements. **Note:** `Suggest` method responses do not include domain availability status. 
105pub async fn suggest_domains(configuration: &mut configuration::Configuration, params: SuggestDomainsParams) -> Result<crate::models::InlineResponse2006, Error<SuggestDomainsError>> {
106    let local_var_configuration = configuration;
107
108    // unbox the parameters
109    let query = params.query;
110    let defaults = params.defaults;
111    let keywords = params.keywords;
112    let location = params.location;
113    let vendor = params.vendor;
114
115
116    let local_var_client = &local_var_configuration.client;
117
118    let local_var_uri_str = format!("{}/domain-management/v1/tools/suggest", local_var_configuration.base_path);
119    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
120
121    local_var_req_builder = local_var_req_builder.query(&[("query", &query.to_string())]);
122    if let Some(ref local_var_str) = defaults {
123        local_var_req_builder = local_var_req_builder.query(&[("defaults", &local_var_str.to_string())]);
124    }
125    if let Some(ref local_var_str) = keywords {
126        local_var_req_builder = local_var_req_builder.query(&[("keywords", &local_var_str.to_string())]);
127    }
128    if let Some(ref local_var_str) = location {
129        local_var_req_builder = local_var_req_builder.query(&[("location", &local_var_str.to_string())]);
130    }
131    if let Some(ref local_var_str) = vendor {
132        local_var_req_builder = local_var_req_builder.query(&[("vendor", &local_var_str.to_string())]);
133    }
134    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
135        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
136    }
137    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
138        let local_var_key = local_var_apikey.key.clone();
139        let local_var_value = match local_var_apikey.prefix {
140            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
141            None => local_var_key,
142        };
143        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
144    };
145
146    let local_var_req = local_var_req_builder.build()?;
147    let local_var_resp = local_var_client.execute(local_var_req).await?;
148
149    if "GET" != "GET" && "GET" != "HEAD" {
150      let headers = local_var_resp.headers();
151      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
152          Some(v) => v.to_str().unwrap().parse().unwrap(),
153          None => configuration::DEFAULT_RATELIMIT,
154      };
155      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
156          Some(v) => v.to_str().unwrap().parse().unwrap(),
157          None => 0,
158      };
159    }
160
161    let local_var_status = local_var_resp.status();
162    let local_var_content = local_var_resp.text().await?;
163
164    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
165        serde_json::from_str(&local_var_content).map_err(Error::from)
166    } else {
167        let local_var_entity: Option<SuggestDomainsError> = serde_json::from_str(&local_var_content).ok();
168        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
169        Err(Error::ResponseError(local_var_error))
170    }
171}
172