#![allow(unused_imports, unused_mut, dead_code)]
#[macro_use]
extern crate serde_derive;
extern crate hyper;
extern crate serde;
extern crate serde_json;
extern crate yup_oauth2 as oauth2;
extern crate mime;
extern crate url;
mod cmn;
use std::collections::HashMap;
use std::cell::RefCell;
use std::borrow::BorrowMut;
use std::default::Default;
use std::collections::BTreeMap;
use serde_json as json;
use std::io;
use std::fs;
use std::mem;
use std::thread::sleep;
use std::time::Duration;
pub use cmn::*;
pub struct PostmasterTools<C, A> {
client: RefCell<C>,
auth: RefCell<A>,
_user_agent: String,
_base_url: String,
_root_url: String,
}
impl<'a, C, A> Hub for PostmasterTools<C, A> {}
impl<'a, C, A> PostmasterTools<C, A>
where C: BorrowMut<hyper::Client>, A: oauth2::GetToken {
pub fn new(client: C, authenticator: A) -> PostmasterTools<C, A> {
PostmasterTools {
client: RefCell::new(client),
auth: RefCell::new(authenticator),
_user_agent: "google-api-rust-client/1.0.14".to_string(),
_base_url: "https://gmailpostmastertools.googleapis.com/".to_string(),
_root_url: "https://gmailpostmastertools.googleapis.com/".to_string(),
}
}
pub fn domains(&'a self) -> DomainMethods<'a, C, A> {
DomainMethods { hub: &self }
}
pub fn user_agent(&mut self, agent_name: String) -> String {
mem::replace(&mut self._user_agent, agent_name)
}
pub fn base_url(&mut self, new_base_url: String) -> String {
mem::replace(&mut self._base_url, new_base_url)
}
pub fn root_url(&mut self, new_root_url: String) -> String {
mem::replace(&mut self._root_url, new_root_url)
}
}
#[derive(Default, Clone, Debug, Serialize, Deserialize)]
pub struct Domain {
#[serde(rename="createTime")]
pub create_time: Option<String>,
pub name: Option<String>,
pub permission: Option<String>,
}
impl Resource for Domain {}
impl ResponseResult for Domain {}
#[derive(Default, Clone, Debug, Serialize, Deserialize)]
pub struct FeedbackLoop {
#[serde(rename="spamRatio")]
pub spam_ratio: Option<f64>,
pub id: Option<String>,
}
impl Part for FeedbackLoop {}
#[derive(Default, Clone, Debug, Serialize, Deserialize)]
pub struct TrafficStats {
#[serde(rename="deliveryErrors")]
pub delivery_errors: Option<Vec<DeliveryError>>,
pub name: Option<String>,
#[serde(rename="ipReputations")]
pub ip_reputations: Option<Vec<IpReputation>>,
#[serde(rename="userReportedSpamRatio")]
pub user_reported_spam_ratio: Option<f64>,
#[serde(rename="domainReputation")]
pub domain_reputation: Option<String>,
#[serde(rename="inboundEncryptionRatio")]
pub inbound_encryption_ratio: Option<f64>,
#[serde(rename="dmarcSuccessRatio")]
pub dmarc_success_ratio: Option<f64>,
#[serde(rename="spammyFeedbackLoops")]
pub spammy_feedback_loops: Option<Vec<FeedbackLoop>>,
#[serde(rename="outboundEncryptionRatio")]
pub outbound_encryption_ratio: Option<f64>,
#[serde(rename="spfSuccessRatio")]
pub spf_success_ratio: Option<f64>,
#[serde(rename="dkimSuccessRatio")]
pub dkim_success_ratio: Option<f64>,
}
impl ResponseResult for TrafficStats {}
#[derive(Default, Clone, Debug, Serialize, Deserialize)]
pub struct DeliveryError {
#[serde(rename="errorClass")]
pub error_class: Option<String>,
#[serde(rename="errorType")]
pub error_type: Option<String>,
#[serde(rename="errorRatio")]
pub error_ratio: Option<f64>,
}
impl Part for DeliveryError {}
#[derive(Default, Clone, Debug, Serialize, Deserialize)]
pub struct ListDomainsResponse {
pub domains: Option<Vec<Domain>>,
#[serde(rename="nextPageToken")]
pub next_page_token: Option<String>,
}
impl ResponseResult for ListDomainsResponse {}
#[derive(Default, Clone, Debug, Serialize, Deserialize)]
pub struct ListTrafficStatsResponse {
#[serde(rename="nextPageToken")]
pub next_page_token: Option<String>,
#[serde(rename="trafficStats")]
pub traffic_stats: Option<Vec<TrafficStats>>,
}
impl ResponseResult for ListTrafficStatsResponse {}
#[derive(Default, Clone, Debug, Serialize, Deserialize)]
pub struct IpReputation {
#[serde(rename="sampleIps")]
pub sample_ips: Option<Vec<String>>,
pub reputation: Option<String>,
#[serde(rename="numIps")]
pub num_ips: Option<String>,
}
impl Part for IpReputation {}
pub struct DomainMethods<'a, C, A>
where C: 'a, A: 'a {
hub: &'a PostmasterTools<C, A>,
}
impl<'a, C, A> MethodsBuilder for DomainMethods<'a, C, A> {}
impl<'a, C, A> DomainMethods<'a, C, A> {
pub fn list(&self) -> DomainListCall<'a, C, A> {
DomainListCall {
hub: self.hub,
_page_token: Default::default(),
_page_size: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
}
}
pub fn get(&self, name: &str) -> DomainGetCall<'a, C, A> {
DomainGetCall {
hub: self.hub,
_name: name.to_string(),
_delegate: Default::default(),
_additional_params: Default::default(),
}
}
pub fn traffic_stats_list(&self, parent: &str) -> DomainTrafficStatListCall<'a, C, A> {
DomainTrafficStatListCall {
hub: self.hub,
_parent: parent.to_string(),
_start_date_year: Default::default(),
_start_date_month: Default::default(),
_start_date_day: Default::default(),
_page_token: Default::default(),
_page_size: Default::default(),
_end_date_year: Default::default(),
_end_date_month: Default::default(),
_end_date_day: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
}
}
pub fn traffic_stats_get(&self, name: &str) -> DomainTrafficStatGetCall<'a, C, A> {
DomainTrafficStatGetCall {
hub: self.hub,
_name: name.to_string(),
_delegate: Default::default(),
_additional_params: Default::default(),
}
}
}
pub struct DomainListCall<'a, C, A>
where C: 'a, A: 'a {
hub: &'a PostmasterTools<C, A>,
_page_token: Option<String>,
_page_size: Option<i32>,
_delegate: Option<&'a mut dyn Delegate>,
_additional_params: HashMap<String, String>,
}
impl<'a, C, A> CallBuilder for DomainListCall<'a, C, A> {}
impl<'a, C, A> DomainListCall<'a, C, A> where C: BorrowMut<hyper::Client>, A: oauth2::GetToken {
pub fn doit(mut self) -> Result<(hyper::client::Response, ListDomainsResponse)> {
use std::io::{Read, Seek};
use hyper::header::{ContentType, ContentLength, Authorization, Bearer, UserAgent, Location};
let mut dd = DefaultDelegate;
let mut dlg: &mut dyn Delegate = match self._delegate {
Some(d) => d,
None => &mut dd
};
dlg.begin(MethodInfo { id: "gmailpostmastertools.domains.list",
http_method: hyper::method::Method::Get });
let mut params: Vec<(&str, String)> = Vec::with_capacity(4 + self._additional_params.len());
if let Some(value) = self._page_token {
params.push(("pageToken", value.to_string()));
}
if let Some(value) = self._page_size {
params.push(("pageSize", value.to_string()));
}
for &field in ["alt", "pageToken", "pageSize"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(Error::FieldClash(field));
}
}
for (name, value) in self._additional_params.iter() {
params.push((&name, value.clone()));
}
params.push(("alt", "json".to_string()));
let mut url = self.hub._base_url.clone() + "v1beta1/domains";
let mut key = self.hub.auth.borrow_mut().api_key();
if key.is_none() {
key = dlg.api_key();
}
match key {
Some(value) => params.push(("key", value)),
None => {
dlg.finished(false);
return Err(Error::MissingAPIKey)
}
}
let url = hyper::Url::parse_with_params(&url, params).unwrap();
loop {
let mut req_result = {
let mut client = &mut *self.hub.client.borrow_mut();
let mut req = client.borrow_mut().request(hyper::method::Method::Get, url.clone())
.header(UserAgent(self.hub._user_agent.clone()));
dlg.pre_request();
req.send()
};
match req_result {
Err(err) => {
if let oauth2::Retry::After(d) = dlg.http_error(&err) {
sleep(d);
continue;
}
dlg.finished(false);
return Err(Error::HttpError(err))
}
Ok(mut res) => {
if !res.status.is_success() {
let mut json_err = String::new();
res.read_to_string(&mut json_err).unwrap();
let json_server_error = json::from_str::<JsonServerError>(&json_err).ok();
let server_error = json::from_str::<ServerError>(&json_err)
.or_else(|_| json::from_str::<ErrorResponse>(&json_err).map(|r| r.error))
.ok();
if let oauth2::Retry::After(d) = dlg.http_failure(&res,
json_server_error,
server_error) {
sleep(d);
continue;
}
dlg.finished(false);
return match json::from_str::<ErrorResponse>(&json_err){
Err(_) => Err(Error::Failure(res)),
Ok(serr) => Err(Error::BadRequest(serr))
}
}
let result_value = {
let mut json_response = String::new();
res.read_to_string(&mut json_response).unwrap();
match json::from_str(&json_response) {
Ok(decoded) => (res, decoded),
Err(err) => {
dlg.response_json_decode_error(&json_response, &err);
return Err(Error::JsonDecodeError(json_response, err));
}
}
};
dlg.finished(true);
return Ok(result_value)
}
}
}
}
pub fn page_token(mut self, new_value: &str) -> DomainListCall<'a, C, A> {
self._page_token = Some(new_value.to_string());
self
}
pub fn page_size(mut self, new_value: i32) -> DomainListCall<'a, C, A> {
self._page_size = Some(new_value);
self
}
pub fn delegate(mut self, new_value: &'a mut dyn Delegate) -> DomainListCall<'a, C, A> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> DomainListCall<'a, C, A>
where T: AsRef<str> {
self._additional_params.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
}
pub struct DomainGetCall<'a, C, A>
where C: 'a, A: 'a {
hub: &'a PostmasterTools<C, A>,
_name: String,
_delegate: Option<&'a mut dyn Delegate>,
_additional_params: HashMap<String, String>,
}
impl<'a, C, A> CallBuilder for DomainGetCall<'a, C, A> {}
impl<'a, C, A> DomainGetCall<'a, C, A> where C: BorrowMut<hyper::Client>, A: oauth2::GetToken {
pub fn doit(mut self) -> Result<(hyper::client::Response, Domain)> {
use url::percent_encoding::{percent_encode, DEFAULT_ENCODE_SET};
use std::io::{Read, Seek};
use hyper::header::{ContentType, ContentLength, Authorization, Bearer, UserAgent, Location};
let mut dd = DefaultDelegate;
let mut dlg: &mut dyn Delegate = match self._delegate {
Some(d) => d,
None => &mut dd
};
dlg.begin(MethodInfo { id: "gmailpostmastertools.domains.get",
http_method: hyper::method::Method::Get });
let mut params: Vec<(&str, String)> = Vec::with_capacity(3 + self._additional_params.len());
params.push(("name", self._name.to_string()));
for &field in ["alt", "name"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(Error::FieldClash(field));
}
}
for (name, value) in self._additional_params.iter() {
params.push((&name, value.clone()));
}
params.push(("alt", "json".to_string()));
let mut url = self.hub._base_url.clone() + "v1beta1/{+name}";
let mut key = self.hub.auth.borrow_mut().api_key();
if key.is_none() {
key = dlg.api_key();
}
match key {
Some(value) => params.push(("key", value)),
None => {
dlg.finished(false);
return Err(Error::MissingAPIKey)
}
}
for &(find_this, param_name) in [("{+name}", "name")].iter() {
let mut replace_with = String::new();
for &(name, ref value) in params.iter() {
if name == param_name {
replace_with = value.to_string();
break;
}
}
if find_this.as_bytes()[1] == '+' as u8 {
replace_with = percent_encode(replace_with.as_bytes(), DEFAULT_ENCODE_SET).to_string();
}
url = url.replace(find_this, &replace_with);
}
{
let mut indices_for_removal: Vec<usize> = Vec::with_capacity(1);
for param_name in ["name"].iter() {
if let Some(index) = params.iter().position(|t| &t.0 == param_name) {
indices_for_removal.push(index);
}
}
for &index in indices_for_removal.iter() {
params.remove(index);
}
}
let url = hyper::Url::parse_with_params(&url, params).unwrap();
loop {
let mut req_result = {
let mut client = &mut *self.hub.client.borrow_mut();
let mut req = client.borrow_mut().request(hyper::method::Method::Get, url.clone())
.header(UserAgent(self.hub._user_agent.clone()));
dlg.pre_request();
req.send()
};
match req_result {
Err(err) => {
if let oauth2::Retry::After(d) = dlg.http_error(&err) {
sleep(d);
continue;
}
dlg.finished(false);
return Err(Error::HttpError(err))
}
Ok(mut res) => {
if !res.status.is_success() {
let mut json_err = String::new();
res.read_to_string(&mut json_err).unwrap();
let json_server_error = json::from_str::<JsonServerError>(&json_err).ok();
let server_error = json::from_str::<ServerError>(&json_err)
.or_else(|_| json::from_str::<ErrorResponse>(&json_err).map(|r| r.error))
.ok();
if let oauth2::Retry::After(d) = dlg.http_failure(&res,
json_server_error,
server_error) {
sleep(d);
continue;
}
dlg.finished(false);
return match json::from_str::<ErrorResponse>(&json_err){
Err(_) => Err(Error::Failure(res)),
Ok(serr) => Err(Error::BadRequest(serr))
}
}
let result_value = {
let mut json_response = String::new();
res.read_to_string(&mut json_response).unwrap();
match json::from_str(&json_response) {
Ok(decoded) => (res, decoded),
Err(err) => {
dlg.response_json_decode_error(&json_response, &err);
return Err(Error::JsonDecodeError(json_response, err));
}
}
};
dlg.finished(true);
return Ok(result_value)
}
}
}
}
pub fn name(mut self, new_value: &str) -> DomainGetCall<'a, C, A> {
self._name = new_value.to_string();
self
}
pub fn delegate(mut self, new_value: &'a mut dyn Delegate) -> DomainGetCall<'a, C, A> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> DomainGetCall<'a, C, A>
where T: AsRef<str> {
self._additional_params.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
}
pub struct DomainTrafficStatListCall<'a, C, A>
where C: 'a, A: 'a {
hub: &'a PostmasterTools<C, A>,
_parent: String,
_start_date_year: Option<i32>,
_start_date_month: Option<i32>,
_start_date_day: Option<i32>,
_page_token: Option<String>,
_page_size: Option<i32>,
_end_date_year: Option<i32>,
_end_date_month: Option<i32>,
_end_date_day: Option<i32>,
_delegate: Option<&'a mut dyn Delegate>,
_additional_params: HashMap<String, String>,
}
impl<'a, C, A> CallBuilder for DomainTrafficStatListCall<'a, C, A> {}
impl<'a, C, A> DomainTrafficStatListCall<'a, C, A> where C: BorrowMut<hyper::Client>, A: oauth2::GetToken {
pub fn doit(mut self) -> Result<(hyper::client::Response, ListTrafficStatsResponse)> {
use url::percent_encoding::{percent_encode, DEFAULT_ENCODE_SET};
use std::io::{Read, Seek};
use hyper::header::{ContentType, ContentLength, Authorization, Bearer, UserAgent, Location};
let mut dd = DefaultDelegate;
let mut dlg: &mut dyn Delegate = match self._delegate {
Some(d) => d,
None => &mut dd
};
dlg.begin(MethodInfo { id: "gmailpostmastertools.domains.trafficStats.list",
http_method: hyper::method::Method::Get });
let mut params: Vec<(&str, String)> = Vec::with_capacity(11 + self._additional_params.len());
params.push(("parent", self._parent.to_string()));
if let Some(value) = self._start_date_year {
params.push(("startDate.year", value.to_string()));
}
if let Some(value) = self._start_date_month {
params.push(("startDate.month", value.to_string()));
}
if let Some(value) = self._start_date_day {
params.push(("startDate.day", value.to_string()));
}
if let Some(value) = self._page_token {
params.push(("pageToken", value.to_string()));
}
if let Some(value) = self._page_size {
params.push(("pageSize", value.to_string()));
}
if let Some(value) = self._end_date_year {
params.push(("endDate.year", value.to_string()));
}
if let Some(value) = self._end_date_month {
params.push(("endDate.month", value.to_string()));
}
if let Some(value) = self._end_date_day {
params.push(("endDate.day", value.to_string()));
}
for &field in ["alt", "parent", "startDate.year", "startDate.month", "startDate.day", "pageToken", "pageSize", "endDate.year", "endDate.month", "endDate.day"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(Error::FieldClash(field));
}
}
for (name, value) in self._additional_params.iter() {
params.push((&name, value.clone()));
}
params.push(("alt", "json".to_string()));
let mut url = self.hub._base_url.clone() + "v1beta1/{+parent}/trafficStats";
let mut key = self.hub.auth.borrow_mut().api_key();
if key.is_none() {
key = dlg.api_key();
}
match key {
Some(value) => params.push(("key", value)),
None => {
dlg.finished(false);
return Err(Error::MissingAPIKey)
}
}
for &(find_this, param_name) in [("{+parent}", "parent")].iter() {
let mut replace_with = String::new();
for &(name, ref value) in params.iter() {
if name == param_name {
replace_with = value.to_string();
break;
}
}
if find_this.as_bytes()[1] == '+' as u8 {
replace_with = percent_encode(replace_with.as_bytes(), DEFAULT_ENCODE_SET).to_string();
}
url = url.replace(find_this, &replace_with);
}
{
let mut indices_for_removal: Vec<usize> = Vec::with_capacity(1);
for param_name in ["parent"].iter() {
if let Some(index) = params.iter().position(|t| &t.0 == param_name) {
indices_for_removal.push(index);
}
}
for &index in indices_for_removal.iter() {
params.remove(index);
}
}
let url = hyper::Url::parse_with_params(&url, params).unwrap();
loop {
let mut req_result = {
let mut client = &mut *self.hub.client.borrow_mut();
let mut req = client.borrow_mut().request(hyper::method::Method::Get, url.clone())
.header(UserAgent(self.hub._user_agent.clone()));
dlg.pre_request();
req.send()
};
match req_result {
Err(err) => {
if let oauth2::Retry::After(d) = dlg.http_error(&err) {
sleep(d);
continue;
}
dlg.finished(false);
return Err(Error::HttpError(err))
}
Ok(mut res) => {
if !res.status.is_success() {
let mut json_err = String::new();
res.read_to_string(&mut json_err).unwrap();
let json_server_error = json::from_str::<JsonServerError>(&json_err).ok();
let server_error = json::from_str::<ServerError>(&json_err)
.or_else(|_| json::from_str::<ErrorResponse>(&json_err).map(|r| r.error))
.ok();
if let oauth2::Retry::After(d) = dlg.http_failure(&res,
json_server_error,
server_error) {
sleep(d);
continue;
}
dlg.finished(false);
return match json::from_str::<ErrorResponse>(&json_err){
Err(_) => Err(Error::Failure(res)),
Ok(serr) => Err(Error::BadRequest(serr))
}
}
let result_value = {
let mut json_response = String::new();
res.read_to_string(&mut json_response).unwrap();
match json::from_str(&json_response) {
Ok(decoded) => (res, decoded),
Err(err) => {
dlg.response_json_decode_error(&json_response, &err);
return Err(Error::JsonDecodeError(json_response, err));
}
}
};
dlg.finished(true);
return Ok(result_value)
}
}
}
}
pub fn parent(mut self, new_value: &str) -> DomainTrafficStatListCall<'a, C, A> {
self._parent = new_value.to_string();
self
}
pub fn start_date_year(mut self, new_value: i32) -> DomainTrafficStatListCall<'a, C, A> {
self._start_date_year = Some(new_value);
self
}
pub fn start_date_month(mut self, new_value: i32) -> DomainTrafficStatListCall<'a, C, A> {
self._start_date_month = Some(new_value);
self
}
pub fn start_date_day(mut self, new_value: i32) -> DomainTrafficStatListCall<'a, C, A> {
self._start_date_day = Some(new_value);
self
}
pub fn page_token(mut self, new_value: &str) -> DomainTrafficStatListCall<'a, C, A> {
self._page_token = Some(new_value.to_string());
self
}
pub fn page_size(mut self, new_value: i32) -> DomainTrafficStatListCall<'a, C, A> {
self._page_size = Some(new_value);
self
}
pub fn end_date_year(mut self, new_value: i32) -> DomainTrafficStatListCall<'a, C, A> {
self._end_date_year = Some(new_value);
self
}
pub fn end_date_month(mut self, new_value: i32) -> DomainTrafficStatListCall<'a, C, A> {
self._end_date_month = Some(new_value);
self
}
pub fn end_date_day(mut self, new_value: i32) -> DomainTrafficStatListCall<'a, C, A> {
self._end_date_day = Some(new_value);
self
}
pub fn delegate(mut self, new_value: &'a mut dyn Delegate) -> DomainTrafficStatListCall<'a, C, A> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> DomainTrafficStatListCall<'a, C, A>
where T: AsRef<str> {
self._additional_params.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
}
pub struct DomainTrafficStatGetCall<'a, C, A>
where C: 'a, A: 'a {
hub: &'a PostmasterTools<C, A>,
_name: String,
_delegate: Option<&'a mut dyn Delegate>,
_additional_params: HashMap<String, String>,
}
impl<'a, C, A> CallBuilder for DomainTrafficStatGetCall<'a, C, A> {}
impl<'a, C, A> DomainTrafficStatGetCall<'a, C, A> where C: BorrowMut<hyper::Client>, A: oauth2::GetToken {
pub fn doit(mut self) -> Result<(hyper::client::Response, TrafficStats)> {
use url::percent_encoding::{percent_encode, DEFAULT_ENCODE_SET};
use std::io::{Read, Seek};
use hyper::header::{ContentType, ContentLength, Authorization, Bearer, UserAgent, Location};
let mut dd = DefaultDelegate;
let mut dlg: &mut dyn Delegate = match self._delegate {
Some(d) => d,
None => &mut dd
};
dlg.begin(MethodInfo { id: "gmailpostmastertools.domains.trafficStats.get",
http_method: hyper::method::Method::Get });
let mut params: Vec<(&str, String)> = Vec::with_capacity(3 + self._additional_params.len());
params.push(("name", self._name.to_string()));
for &field in ["alt", "name"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(Error::FieldClash(field));
}
}
for (name, value) in self._additional_params.iter() {
params.push((&name, value.clone()));
}
params.push(("alt", "json".to_string()));
let mut url = self.hub._base_url.clone() + "v1beta1/{+name}";
let mut key = self.hub.auth.borrow_mut().api_key();
if key.is_none() {
key = dlg.api_key();
}
match key {
Some(value) => params.push(("key", value)),
None => {
dlg.finished(false);
return Err(Error::MissingAPIKey)
}
}
for &(find_this, param_name) in [("{+name}", "name")].iter() {
let mut replace_with = String::new();
for &(name, ref value) in params.iter() {
if name == param_name {
replace_with = value.to_string();
break;
}
}
if find_this.as_bytes()[1] == '+' as u8 {
replace_with = percent_encode(replace_with.as_bytes(), DEFAULT_ENCODE_SET).to_string();
}
url = url.replace(find_this, &replace_with);
}
{
let mut indices_for_removal: Vec<usize> = Vec::with_capacity(1);
for param_name in ["name"].iter() {
if let Some(index) = params.iter().position(|t| &t.0 == param_name) {
indices_for_removal.push(index);
}
}
for &index in indices_for_removal.iter() {
params.remove(index);
}
}
let url = hyper::Url::parse_with_params(&url, params).unwrap();
loop {
let mut req_result = {
let mut client = &mut *self.hub.client.borrow_mut();
let mut req = client.borrow_mut().request(hyper::method::Method::Get, url.clone())
.header(UserAgent(self.hub._user_agent.clone()));
dlg.pre_request();
req.send()
};
match req_result {
Err(err) => {
if let oauth2::Retry::After(d) = dlg.http_error(&err) {
sleep(d);
continue;
}
dlg.finished(false);
return Err(Error::HttpError(err))
}
Ok(mut res) => {
if !res.status.is_success() {
let mut json_err = String::new();
res.read_to_string(&mut json_err).unwrap();
let json_server_error = json::from_str::<JsonServerError>(&json_err).ok();
let server_error = json::from_str::<ServerError>(&json_err)
.or_else(|_| json::from_str::<ErrorResponse>(&json_err).map(|r| r.error))
.ok();
if let oauth2::Retry::After(d) = dlg.http_failure(&res,
json_server_error,
server_error) {
sleep(d);
continue;
}
dlg.finished(false);
return match json::from_str::<ErrorResponse>(&json_err){
Err(_) => Err(Error::Failure(res)),
Ok(serr) => Err(Error::BadRequest(serr))
}
}
let result_value = {
let mut json_response = String::new();
res.read_to_string(&mut json_response).unwrap();
match json::from_str(&json_response) {
Ok(decoded) => (res, decoded),
Err(err) => {
dlg.response_json_decode_error(&json_response, &err);
return Err(Error::JsonDecodeError(json_response, err));
}
}
};
dlg.finished(true);
return Ok(result_value)
}
}
}
}
pub fn name(mut self, new_value: &str) -> DomainTrafficStatGetCall<'a, C, A> {
self._name = new_value.to_string();
self
}
pub fn delegate(mut self, new_value: &'a mut dyn Delegate) -> DomainTrafficStatGetCall<'a, C, A> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> DomainTrafficStatGetCall<'a, C, A>
where T: AsRef<str> {
self._additional_params.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
}