use super::{configuration, Error};
use crate::apis::ResponseContent;
use ::qcs_api_client_common::backoff::{
duration_from_io_error, duration_from_reqwest_error, duration_from_response, ExponentialBackoff,
};
#[cfg(feature = "tracing")]
use qcs_api_client_common::configuration::TokenRefresher;
use reqwest::StatusCode;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum AddGroupUserError {
Status404(crate::models::Error),
Status422(crate::models::Error),
UnknownValue(serde_json::Value),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum GetGroupBalanceError {
Status403(crate::models::Error),
Status404(crate::models::Error),
Status422(crate::models::Error),
UnknownValue(serde_json::Value),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum GetGroupBillingCustomerError {
Status403(crate::models::Error),
Status404(crate::models::Error),
UnknownValue(serde_json::Value),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum GetGroupUpcomingBillingInvoiceError {
Status403(crate::models::Error),
Status404(crate::models::Error),
UnknownValue(serde_json::Value),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum GetUserBalanceError {
Status403(crate::models::Error),
Status404(crate::models::Error),
Status422(crate::models::Error),
UnknownValue(serde_json::Value),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum GetUserBillingCustomerError {
Status403(crate::models::Error),
Status404(crate::models::Error),
UnknownValue(serde_json::Value),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum GetUserEventBillingPriceError {
Status403(crate::models::Error),
Status404(crate::models::Error),
Status422(crate::models::Error),
UnknownValue(serde_json::Value),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum GetUserUpcomingBillingInvoiceError {
Status403(crate::models::Error),
Status404(crate::models::Error),
UnknownValue(serde_json::Value),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum ListGroupBillingInvoiceLinesError {
Status403(crate::models::Error),
Status404(crate::models::Error),
UnknownValue(serde_json::Value),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum ListGroupBillingInvoicesError {
Status403(crate::models::Error),
Status404(crate::models::Error),
UnknownValue(serde_json::Value),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum ListGroupUpcomingBillingInvoiceLinesError {
Status403(crate::models::Error),
Status404(crate::models::Error),
UnknownValue(serde_json::Value),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum ListGroupUsersError {
Status404(crate::models::Error),
Status422(crate::models::Error),
UnknownValue(serde_json::Value),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum ListUserBillingInvoiceLinesError {
Status403(crate::models::Error),
Status404(crate::models::Error),
UnknownValue(serde_json::Value),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum ListUserBillingInvoicesError {
Status403(crate::models::Error),
Status404(crate::models::Error),
UnknownValue(serde_json::Value),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum ListUserGroupsError {
Status422(crate::models::Error),
UnknownValue(serde_json::Value),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum ListUserUpcomingBillingInvoiceLinesError {
Status403(crate::models::Error),
Status404(crate::models::Error),
UnknownValue(serde_json::Value),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum RemoveGroupUserError {
Status404(crate::models::Error),
Status422(crate::models::Error),
UnknownValue(serde_json::Value),
}
async fn add_group_user_inner(
configuration: &configuration::Configuration,
backoff: &mut ExponentialBackoff,
add_group_user_request: crate::models::AddGroupUserRequest,
) -> Result<(), Error<AddGroupUserError>> {
let local_var_configuration = configuration;
let local_var_client = &local_var_configuration.client;
let local_var_uri_str = format!(
"{}/v1/groups:addUser",
local_var_configuration.qcs_config.api_url()
);
let mut local_var_req_builder =
local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
#[cfg(feature = "tracing")]
{
let local_var_do_tracing =
local_var_uri_str
.parse::<::url::Url>()
.ok()
.map_or(true, |url| {
configuration
.qcs_config
.should_trace(&::urlpattern::UrlPatternMatchInput::Url(url))
});
if local_var_do_tracing {
::tracing::debug!(
url=%local_var_uri_str,
method="POST",
"making add_group_user request",
);
}
}
let token = configuration.qcs_config.get_bearer_access_token().await?;
local_var_req_builder = local_var_req_builder.bearer_auth(token);
local_var_req_builder = local_var_req_builder.json(&add_group_user_request);
let local_var_req = local_var_req_builder.build()?;
let local_var_resp = local_var_client.execute(local_var_req).await?;
let local_var_status = local_var_resp.status();
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
Ok(())
} else {
let local_var_retry_delay =
duration_from_response(local_var_resp.status(), local_var_resp.headers(), backoff);
let local_var_content = local_var_resp.text().await?;
let local_var_entity: Option<AddGroupUserError> =
serde_json::from_str(&local_var_content).ok();
let local_var_error = ResponseContent {
status: local_var_status,
content: local_var_content,
entity: local_var_entity,
retry_delay: local_var_retry_delay,
};
Err(Error::ResponseError(local_var_error))
}
}
pub async fn add_group_user(
configuration: &configuration::Configuration,
add_group_user_request: crate::models::AddGroupUserRequest,
) -> Result<(), Error<AddGroupUserError>> {
let mut backoff = configuration.backoff.clone();
let mut refreshed_credentials = false;
let method = reqwest::Method::POST;
loop {
let result =
add_group_user_inner(configuration, &mut backoff, add_group_user_request.clone()).await;
match result {
Ok(result) => return Ok(result),
Err(Error::ResponseError(response)) => {
if !refreshed_credentials
&& matches!(
response.status,
StatusCode::FORBIDDEN | StatusCode::UNAUTHORIZED
)
{
configuration.qcs_config.refresh().await?;
refreshed_credentials = true;
continue;
} else if let Some(duration) = response.retry_delay {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::ResponseError(response));
}
Err(Error::Reqwest(error)) => {
if let Some(duration) = duration_from_reqwest_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Reqwest(error));
}
Err(Error::Io(error)) => {
if let Some(duration) = duration_from_io_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Io(error));
}
Err(error) => return Err(error),
}
}
}
async fn get_group_balance_inner(
configuration: &configuration::Configuration,
backoff: &mut ExponentialBackoff,
group_name: &str,
) -> Result<crate::models::AccountBalance, Error<GetGroupBalanceError>> {
let local_var_configuration = configuration;
let local_var_client = &local_var_configuration.client;
let local_var_uri_str = format!(
"{}/v1/groups/{groupName}/balance",
local_var_configuration.qcs_config.api_url(),
groupName = crate::apis::urlencode(group_name)
);
let mut local_var_req_builder =
local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
#[cfg(feature = "tracing")]
{
let local_var_do_tracing =
local_var_uri_str
.parse::<::url::Url>()
.ok()
.map_or(true, |url| {
configuration
.qcs_config
.should_trace(&::urlpattern::UrlPatternMatchInput::Url(url))
});
if local_var_do_tracing {
::tracing::debug!(
url=%local_var_uri_str,
method="GET",
"making get_group_balance request",
);
}
}
let token = configuration.qcs_config.get_bearer_access_token().await?;
local_var_req_builder = local_var_req_builder.bearer_auth(token);
let local_var_req = local_var_req_builder.build()?;
let local_var_resp = local_var_client.execute(local_var_req).await?;
let local_var_status = local_var_resp.status();
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
let local_var_content = local_var_resp.text().await?;
serde_json::from_str(&local_var_content).map_err(Error::from)
} else {
let local_var_retry_delay =
duration_from_response(local_var_resp.status(), local_var_resp.headers(), backoff);
let local_var_content = local_var_resp.text().await?;
let local_var_entity: Option<GetGroupBalanceError> =
serde_json::from_str(&local_var_content).ok();
let local_var_error = ResponseContent {
status: local_var_status,
content: local_var_content,
entity: local_var_entity,
retry_delay: local_var_retry_delay,
};
Err(Error::ResponseError(local_var_error))
}
}
pub async fn get_group_balance(
configuration: &configuration::Configuration,
group_name: &str,
) -> Result<crate::models::AccountBalance, Error<GetGroupBalanceError>> {
let mut backoff = configuration.backoff.clone();
let mut refreshed_credentials = false;
let method = reqwest::Method::GET;
loop {
let result = get_group_balance_inner(configuration, &mut backoff, group_name.clone()).await;
match result {
Ok(result) => return Ok(result),
Err(Error::ResponseError(response)) => {
if !refreshed_credentials
&& matches!(
response.status,
StatusCode::FORBIDDEN | StatusCode::UNAUTHORIZED
)
{
configuration.qcs_config.refresh().await?;
refreshed_credentials = true;
continue;
} else if let Some(duration) = response.retry_delay {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::ResponseError(response));
}
Err(Error::Reqwest(error)) => {
if let Some(duration) = duration_from_reqwest_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Reqwest(error));
}
Err(Error::Io(error)) => {
if let Some(duration) = duration_from_io_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Io(error));
}
Err(error) => return Err(error),
}
}
}
async fn get_group_billing_customer_inner(
configuration: &configuration::Configuration,
backoff: &mut ExponentialBackoff,
group_name: &str,
) -> Result<crate::models::BillingCustomer, Error<GetGroupBillingCustomerError>> {
let local_var_configuration = configuration;
let local_var_client = &local_var_configuration.client;
let local_var_uri_str = format!(
"{}/v1/groups/{groupName}/billingCustomer",
local_var_configuration.qcs_config.api_url(),
groupName = crate::apis::urlencode(group_name)
);
let mut local_var_req_builder =
local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
#[cfg(feature = "tracing")]
{
let local_var_do_tracing =
local_var_uri_str
.parse::<::url::Url>()
.ok()
.map_or(true, |url| {
configuration
.qcs_config
.should_trace(&::urlpattern::UrlPatternMatchInput::Url(url))
});
if local_var_do_tracing {
::tracing::debug!(
url=%local_var_uri_str,
method="GET",
"making get_group_billing_customer request",
);
}
}
let token = configuration.qcs_config.get_bearer_access_token().await?;
local_var_req_builder = local_var_req_builder.bearer_auth(token);
let local_var_req = local_var_req_builder.build()?;
let local_var_resp = local_var_client.execute(local_var_req).await?;
let local_var_status = local_var_resp.status();
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
let local_var_content = local_var_resp.text().await?;
serde_json::from_str(&local_var_content).map_err(Error::from)
} else {
let local_var_retry_delay =
duration_from_response(local_var_resp.status(), local_var_resp.headers(), backoff);
let local_var_content = local_var_resp.text().await?;
let local_var_entity: Option<GetGroupBillingCustomerError> =
serde_json::from_str(&local_var_content).ok();
let local_var_error = ResponseContent {
status: local_var_status,
content: local_var_content,
entity: local_var_entity,
retry_delay: local_var_retry_delay,
};
Err(Error::ResponseError(local_var_error))
}
}
pub async fn get_group_billing_customer(
configuration: &configuration::Configuration,
group_name: &str,
) -> Result<crate::models::BillingCustomer, Error<GetGroupBillingCustomerError>> {
let mut backoff = configuration.backoff.clone();
let mut refreshed_credentials = false;
let method = reqwest::Method::GET;
loop {
let result =
get_group_billing_customer_inner(configuration, &mut backoff, group_name.clone()).await;
match result {
Ok(result) => return Ok(result),
Err(Error::ResponseError(response)) => {
if !refreshed_credentials
&& matches!(
response.status,
StatusCode::FORBIDDEN | StatusCode::UNAUTHORIZED
)
{
configuration.qcs_config.refresh().await?;
refreshed_credentials = true;
continue;
} else if let Some(duration) = response.retry_delay {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::ResponseError(response));
}
Err(Error::Reqwest(error)) => {
if let Some(duration) = duration_from_reqwest_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Reqwest(error));
}
Err(Error::Io(error)) => {
if let Some(duration) = duration_from_io_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Io(error));
}
Err(error) => return Err(error),
}
}
}
async fn get_group_upcoming_billing_invoice_inner(
configuration: &configuration::Configuration,
backoff: &mut ExponentialBackoff,
group_name: &str,
) -> Result<crate::models::BillingUpcomingInvoice, Error<GetGroupUpcomingBillingInvoiceError>> {
let local_var_configuration = configuration;
let local_var_client = &local_var_configuration.client;
let local_var_uri_str = format!(
"{}/v1/groups/{groupName}/billingInvoices:getUpcoming",
local_var_configuration.qcs_config.api_url(),
groupName = crate::apis::urlencode(group_name)
);
let mut local_var_req_builder =
local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
#[cfg(feature = "tracing")]
{
let local_var_do_tracing =
local_var_uri_str
.parse::<::url::Url>()
.ok()
.map_or(true, |url| {
configuration
.qcs_config
.should_trace(&::urlpattern::UrlPatternMatchInput::Url(url))
});
if local_var_do_tracing {
::tracing::debug!(
url=%local_var_uri_str,
method="GET",
"making get_group_upcoming_billing_invoice request",
);
}
}
let token = configuration.qcs_config.get_bearer_access_token().await?;
local_var_req_builder = local_var_req_builder.bearer_auth(token);
let local_var_req = local_var_req_builder.build()?;
let local_var_resp = local_var_client.execute(local_var_req).await?;
let local_var_status = local_var_resp.status();
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
let local_var_content = local_var_resp.text().await?;
serde_json::from_str(&local_var_content).map_err(Error::from)
} else {
let local_var_retry_delay =
duration_from_response(local_var_resp.status(), local_var_resp.headers(), backoff);
let local_var_content = local_var_resp.text().await?;
let local_var_entity: Option<GetGroupUpcomingBillingInvoiceError> =
serde_json::from_str(&local_var_content).ok();
let local_var_error = ResponseContent {
status: local_var_status,
content: local_var_content,
entity: local_var_entity,
retry_delay: local_var_retry_delay,
};
Err(Error::ResponseError(local_var_error))
}
}
pub async fn get_group_upcoming_billing_invoice(
configuration: &configuration::Configuration,
group_name: &str,
) -> Result<crate::models::BillingUpcomingInvoice, Error<GetGroupUpcomingBillingInvoiceError>> {
let mut backoff = configuration.backoff.clone();
let mut refreshed_credentials = false;
let method = reqwest::Method::GET;
loop {
let result = get_group_upcoming_billing_invoice_inner(
configuration,
&mut backoff,
group_name.clone(),
)
.await;
match result {
Ok(result) => return Ok(result),
Err(Error::ResponseError(response)) => {
if !refreshed_credentials
&& matches!(
response.status,
StatusCode::FORBIDDEN | StatusCode::UNAUTHORIZED
)
{
configuration.qcs_config.refresh().await?;
refreshed_credentials = true;
continue;
} else if let Some(duration) = response.retry_delay {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::ResponseError(response));
}
Err(Error::Reqwest(error)) => {
if let Some(duration) = duration_from_reqwest_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Reqwest(error));
}
Err(Error::Io(error)) => {
if let Some(duration) = duration_from_io_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Io(error));
}
Err(error) => return Err(error),
}
}
}
async fn get_user_balance_inner(
configuration: &configuration::Configuration,
backoff: &mut ExponentialBackoff,
user_id: &str,
) -> Result<crate::models::AccountBalance, Error<GetUserBalanceError>> {
let local_var_configuration = configuration;
let local_var_client = &local_var_configuration.client;
let local_var_uri_str = format!(
"{}/v1/users/{userId}/balance",
local_var_configuration.qcs_config.api_url(),
userId = crate::apis::urlencode(user_id)
);
let mut local_var_req_builder =
local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
#[cfg(feature = "tracing")]
{
let local_var_do_tracing =
local_var_uri_str
.parse::<::url::Url>()
.ok()
.map_or(true, |url| {
configuration
.qcs_config
.should_trace(&::urlpattern::UrlPatternMatchInput::Url(url))
});
if local_var_do_tracing {
::tracing::debug!(
url=%local_var_uri_str,
method="GET",
"making get_user_balance request",
);
}
}
let token = configuration.qcs_config.get_bearer_access_token().await?;
local_var_req_builder = local_var_req_builder.bearer_auth(token);
let local_var_req = local_var_req_builder.build()?;
let local_var_resp = local_var_client.execute(local_var_req).await?;
let local_var_status = local_var_resp.status();
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
let local_var_content = local_var_resp.text().await?;
serde_json::from_str(&local_var_content).map_err(Error::from)
} else {
let local_var_retry_delay =
duration_from_response(local_var_resp.status(), local_var_resp.headers(), backoff);
let local_var_content = local_var_resp.text().await?;
let local_var_entity: Option<GetUserBalanceError> =
serde_json::from_str(&local_var_content).ok();
let local_var_error = ResponseContent {
status: local_var_status,
content: local_var_content,
entity: local_var_entity,
retry_delay: local_var_retry_delay,
};
Err(Error::ResponseError(local_var_error))
}
}
pub async fn get_user_balance(
configuration: &configuration::Configuration,
user_id: &str,
) -> Result<crate::models::AccountBalance, Error<GetUserBalanceError>> {
let mut backoff = configuration.backoff.clone();
let mut refreshed_credentials = false;
let method = reqwest::Method::GET;
loop {
let result = get_user_balance_inner(configuration, &mut backoff, user_id.clone()).await;
match result {
Ok(result) => return Ok(result),
Err(Error::ResponseError(response)) => {
if !refreshed_credentials
&& matches!(
response.status,
StatusCode::FORBIDDEN | StatusCode::UNAUTHORIZED
)
{
configuration.qcs_config.refresh().await?;
refreshed_credentials = true;
continue;
} else if let Some(duration) = response.retry_delay {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::ResponseError(response));
}
Err(Error::Reqwest(error)) => {
if let Some(duration) = duration_from_reqwest_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Reqwest(error));
}
Err(Error::Io(error)) => {
if let Some(duration) = duration_from_io_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Io(error));
}
Err(error) => return Err(error),
}
}
}
async fn get_user_billing_customer_inner(
configuration: &configuration::Configuration,
backoff: &mut ExponentialBackoff,
user_id: &str,
) -> Result<crate::models::BillingCustomer, Error<GetUserBillingCustomerError>> {
let local_var_configuration = configuration;
let local_var_client = &local_var_configuration.client;
let local_var_uri_str = format!(
"{}/v1/users/{userId}/billingCustomer",
local_var_configuration.qcs_config.api_url(),
userId = crate::apis::urlencode(user_id)
);
let mut local_var_req_builder =
local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
#[cfg(feature = "tracing")]
{
let local_var_do_tracing =
local_var_uri_str
.parse::<::url::Url>()
.ok()
.map_or(true, |url| {
configuration
.qcs_config
.should_trace(&::urlpattern::UrlPatternMatchInput::Url(url))
});
if local_var_do_tracing {
::tracing::debug!(
url=%local_var_uri_str,
method="GET",
"making get_user_billing_customer request",
);
}
}
let token = configuration.qcs_config.get_bearer_access_token().await?;
local_var_req_builder = local_var_req_builder.bearer_auth(token);
let local_var_req = local_var_req_builder.build()?;
let local_var_resp = local_var_client.execute(local_var_req).await?;
let local_var_status = local_var_resp.status();
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
let local_var_content = local_var_resp.text().await?;
serde_json::from_str(&local_var_content).map_err(Error::from)
} else {
let local_var_retry_delay =
duration_from_response(local_var_resp.status(), local_var_resp.headers(), backoff);
let local_var_content = local_var_resp.text().await?;
let local_var_entity: Option<GetUserBillingCustomerError> =
serde_json::from_str(&local_var_content).ok();
let local_var_error = ResponseContent {
status: local_var_status,
content: local_var_content,
entity: local_var_entity,
retry_delay: local_var_retry_delay,
};
Err(Error::ResponseError(local_var_error))
}
}
pub async fn get_user_billing_customer(
configuration: &configuration::Configuration,
user_id: &str,
) -> Result<crate::models::BillingCustomer, Error<GetUserBillingCustomerError>> {
let mut backoff = configuration.backoff.clone();
let mut refreshed_credentials = false;
let method = reqwest::Method::GET;
loop {
let result =
get_user_billing_customer_inner(configuration, &mut backoff, user_id.clone()).await;
match result {
Ok(result) => return Ok(result),
Err(Error::ResponseError(response)) => {
if !refreshed_credentials
&& matches!(
response.status,
StatusCode::FORBIDDEN | StatusCode::UNAUTHORIZED
)
{
configuration.qcs_config.refresh().await?;
refreshed_credentials = true;
continue;
} else if let Some(duration) = response.retry_delay {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::ResponseError(response));
}
Err(Error::Reqwest(error)) => {
if let Some(duration) = duration_from_reqwest_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Reqwest(error));
}
Err(Error::Io(error)) => {
if let Some(duration) = duration_from_io_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Io(error));
}
Err(error) => return Err(error),
}
}
}
async fn get_user_event_billing_price_inner(
configuration: &configuration::Configuration,
backoff: &mut ExponentialBackoff,
user_id: &str,
get_account_event_billing_price_request: crate::models::GetAccountEventBillingPriceRequest,
) -> Result<crate::models::EventBillingPriceRate, Error<GetUserEventBillingPriceError>> {
let local_var_configuration = configuration;
let local_var_client = &local_var_configuration.client;
let local_var_uri_str = format!(
"{}/v1/users/{userId}/eventBillingPrices:get",
local_var_configuration.qcs_config.api_url(),
userId = crate::apis::urlencode(user_id)
);
let mut local_var_req_builder =
local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
#[cfg(feature = "tracing")]
{
let local_var_do_tracing =
local_var_uri_str
.parse::<::url::Url>()
.ok()
.map_or(true, |url| {
configuration
.qcs_config
.should_trace(&::urlpattern::UrlPatternMatchInput::Url(url))
});
if local_var_do_tracing {
::tracing::debug!(
url=%local_var_uri_str,
method="POST",
"making get_user_event_billing_price request",
);
}
}
let token = configuration.qcs_config.get_bearer_access_token().await?;
local_var_req_builder = local_var_req_builder.bearer_auth(token);
local_var_req_builder = local_var_req_builder.json(&get_account_event_billing_price_request);
let local_var_req = local_var_req_builder.build()?;
let local_var_resp = local_var_client.execute(local_var_req).await?;
let local_var_status = local_var_resp.status();
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
let local_var_content = local_var_resp.text().await?;
serde_json::from_str(&local_var_content).map_err(Error::from)
} else {
let local_var_retry_delay =
duration_from_response(local_var_resp.status(), local_var_resp.headers(), backoff);
let local_var_content = local_var_resp.text().await?;
let local_var_entity: Option<GetUserEventBillingPriceError> =
serde_json::from_str(&local_var_content).ok();
let local_var_error = ResponseContent {
status: local_var_status,
content: local_var_content,
entity: local_var_entity,
retry_delay: local_var_retry_delay,
};
Err(Error::ResponseError(local_var_error))
}
}
pub async fn get_user_event_billing_price(
configuration: &configuration::Configuration,
user_id: &str,
get_account_event_billing_price_request: crate::models::GetAccountEventBillingPriceRequest,
) -> Result<crate::models::EventBillingPriceRate, Error<GetUserEventBillingPriceError>> {
let mut backoff = configuration.backoff.clone();
let mut refreshed_credentials = false;
let method = reqwest::Method::POST;
loop {
let result = get_user_event_billing_price_inner(
configuration,
&mut backoff,
user_id.clone(),
get_account_event_billing_price_request.clone(),
)
.await;
match result {
Ok(result) => return Ok(result),
Err(Error::ResponseError(response)) => {
if !refreshed_credentials
&& matches!(
response.status,
StatusCode::FORBIDDEN | StatusCode::UNAUTHORIZED
)
{
configuration.qcs_config.refresh().await?;
refreshed_credentials = true;
continue;
} else if let Some(duration) = response.retry_delay {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::ResponseError(response));
}
Err(Error::Reqwest(error)) => {
if let Some(duration) = duration_from_reqwest_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Reqwest(error));
}
Err(Error::Io(error)) => {
if let Some(duration) = duration_from_io_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Io(error));
}
Err(error) => return Err(error),
}
}
}
async fn get_user_upcoming_billing_invoice_inner(
configuration: &configuration::Configuration,
backoff: &mut ExponentialBackoff,
user_id: &str,
) -> Result<crate::models::BillingUpcomingInvoice, Error<GetUserUpcomingBillingInvoiceError>> {
let local_var_configuration = configuration;
let local_var_client = &local_var_configuration.client;
let local_var_uri_str = format!(
"{}/v1/users/{userId}/billingInvoices:getUpcoming",
local_var_configuration.qcs_config.api_url(),
userId = crate::apis::urlencode(user_id)
);
let mut local_var_req_builder =
local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
#[cfg(feature = "tracing")]
{
let local_var_do_tracing =
local_var_uri_str
.parse::<::url::Url>()
.ok()
.map_or(true, |url| {
configuration
.qcs_config
.should_trace(&::urlpattern::UrlPatternMatchInput::Url(url))
});
if local_var_do_tracing {
::tracing::debug!(
url=%local_var_uri_str,
method="GET",
"making get_user_upcoming_billing_invoice request",
);
}
}
let token = configuration.qcs_config.get_bearer_access_token().await?;
local_var_req_builder = local_var_req_builder.bearer_auth(token);
let local_var_req = local_var_req_builder.build()?;
let local_var_resp = local_var_client.execute(local_var_req).await?;
let local_var_status = local_var_resp.status();
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
let local_var_content = local_var_resp.text().await?;
serde_json::from_str(&local_var_content).map_err(Error::from)
} else {
let local_var_retry_delay =
duration_from_response(local_var_resp.status(), local_var_resp.headers(), backoff);
let local_var_content = local_var_resp.text().await?;
let local_var_entity: Option<GetUserUpcomingBillingInvoiceError> =
serde_json::from_str(&local_var_content).ok();
let local_var_error = ResponseContent {
status: local_var_status,
content: local_var_content,
entity: local_var_entity,
retry_delay: local_var_retry_delay,
};
Err(Error::ResponseError(local_var_error))
}
}
pub async fn get_user_upcoming_billing_invoice(
configuration: &configuration::Configuration,
user_id: &str,
) -> Result<crate::models::BillingUpcomingInvoice, Error<GetUserUpcomingBillingInvoiceError>> {
let mut backoff = configuration.backoff.clone();
let mut refreshed_credentials = false;
let method = reqwest::Method::GET;
loop {
let result =
get_user_upcoming_billing_invoice_inner(configuration, &mut backoff, user_id.clone())
.await;
match result {
Ok(result) => return Ok(result),
Err(Error::ResponseError(response)) => {
if !refreshed_credentials
&& matches!(
response.status,
StatusCode::FORBIDDEN | StatusCode::UNAUTHORIZED
)
{
configuration.qcs_config.refresh().await?;
refreshed_credentials = true;
continue;
} else if let Some(duration) = response.retry_delay {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::ResponseError(response));
}
Err(Error::Reqwest(error)) => {
if let Some(duration) = duration_from_reqwest_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Reqwest(error));
}
Err(Error::Io(error)) => {
if let Some(duration) = duration_from_io_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Io(error));
}
Err(error) => return Err(error),
}
}
}
async fn list_group_billing_invoice_lines_inner(
configuration: &configuration::Configuration,
backoff: &mut ExponentialBackoff,
group_name: &str,
billing_invoice_id: &str,
page_token: Option<&str>,
page_size: Option<i64>,
) -> Result<
crate::models::ListAccountBillingInvoiceLinesResponse,
Error<ListGroupBillingInvoiceLinesError>,
> {
let local_var_configuration = configuration;
let local_var_client = &local_var_configuration.client;
let local_var_uri_str = format!(
"{}/v1/groups/{groupName}/billingInvoices/{billingInvoiceId}/lines",
local_var_configuration.qcs_config.api_url(),
groupName = crate::apis::urlencode(group_name),
billingInvoiceId = crate::apis::urlencode(billing_invoice_id)
);
let mut local_var_req_builder =
local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
#[cfg(feature = "tracing")]
{
let local_var_do_tracing =
local_var_uri_str
.parse::<::url::Url>()
.ok()
.map_or(true, |url| {
configuration
.qcs_config
.should_trace(&::urlpattern::UrlPatternMatchInput::Url(url))
});
if local_var_do_tracing {
::tracing::debug!(
url=%local_var_uri_str,
method="GET",
"making list_group_billing_invoice_lines request",
);
}
}
if let Some(ref local_var_str) = page_token {
local_var_req_builder =
local_var_req_builder.query(&[("pageToken", &local_var_str.to_string())]);
}
if let Some(ref local_var_str) = page_size {
local_var_req_builder =
local_var_req_builder.query(&[("pageSize", &local_var_str.to_string())]);
}
let token = configuration.qcs_config.get_bearer_access_token().await?;
local_var_req_builder = local_var_req_builder.bearer_auth(token);
let local_var_req = local_var_req_builder.build()?;
let local_var_resp = local_var_client.execute(local_var_req).await?;
let local_var_status = local_var_resp.status();
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
let local_var_content = local_var_resp.text().await?;
serde_json::from_str(&local_var_content).map_err(Error::from)
} else {
let local_var_retry_delay =
duration_from_response(local_var_resp.status(), local_var_resp.headers(), backoff);
let local_var_content = local_var_resp.text().await?;
let local_var_entity: Option<ListGroupBillingInvoiceLinesError> =
serde_json::from_str(&local_var_content).ok();
let local_var_error = ResponseContent {
status: local_var_status,
content: local_var_content,
entity: local_var_entity,
retry_delay: local_var_retry_delay,
};
Err(Error::ResponseError(local_var_error))
}
}
pub async fn list_group_billing_invoice_lines(
configuration: &configuration::Configuration,
group_name: &str,
billing_invoice_id: &str,
page_token: Option<&str>,
page_size: Option<i64>,
) -> Result<
crate::models::ListAccountBillingInvoiceLinesResponse,
Error<ListGroupBillingInvoiceLinesError>,
> {
let mut backoff = configuration.backoff.clone();
let mut refreshed_credentials = false;
let method = reqwest::Method::GET;
loop {
let result = list_group_billing_invoice_lines_inner(
configuration,
&mut backoff,
group_name.clone(),
billing_invoice_id.clone(),
page_token.clone(),
page_size.clone(),
)
.await;
match result {
Ok(result) => return Ok(result),
Err(Error::ResponseError(response)) => {
if !refreshed_credentials
&& matches!(
response.status,
StatusCode::FORBIDDEN | StatusCode::UNAUTHORIZED
)
{
configuration.qcs_config.refresh().await?;
refreshed_credentials = true;
continue;
} else if let Some(duration) = response.retry_delay {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::ResponseError(response));
}
Err(Error::Reqwest(error)) => {
if let Some(duration) = duration_from_reqwest_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Reqwest(error));
}
Err(Error::Io(error)) => {
if let Some(duration) = duration_from_io_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Io(error));
}
Err(error) => return Err(error),
}
}
}
async fn list_group_billing_invoices_inner(
configuration: &configuration::Configuration,
backoff: &mut ExponentialBackoff,
group_name: &str,
page_token: Option<&str>,
page_size: Option<i64>,
) -> Result<crate::models::ListAccountBillingInvoicesResponse, Error<ListGroupBillingInvoicesError>>
{
let local_var_configuration = configuration;
let local_var_client = &local_var_configuration.client;
let local_var_uri_str = format!(
"{}/v1/groups/{groupName}/billingInvoices",
local_var_configuration.qcs_config.api_url(),
groupName = crate::apis::urlencode(group_name)
);
let mut local_var_req_builder =
local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
#[cfg(feature = "tracing")]
{
let local_var_do_tracing =
local_var_uri_str
.parse::<::url::Url>()
.ok()
.map_or(true, |url| {
configuration
.qcs_config
.should_trace(&::urlpattern::UrlPatternMatchInput::Url(url))
});
if local_var_do_tracing {
::tracing::debug!(
url=%local_var_uri_str,
method="GET",
"making list_group_billing_invoices request",
);
}
}
if let Some(ref local_var_str) = page_token {
local_var_req_builder =
local_var_req_builder.query(&[("pageToken", &local_var_str.to_string())]);
}
if let Some(ref local_var_str) = page_size {
local_var_req_builder =
local_var_req_builder.query(&[("pageSize", &local_var_str.to_string())]);
}
let token = configuration.qcs_config.get_bearer_access_token().await?;
local_var_req_builder = local_var_req_builder.bearer_auth(token);
let local_var_req = local_var_req_builder.build()?;
let local_var_resp = local_var_client.execute(local_var_req).await?;
let local_var_status = local_var_resp.status();
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
let local_var_content = local_var_resp.text().await?;
serde_json::from_str(&local_var_content).map_err(Error::from)
} else {
let local_var_retry_delay =
duration_from_response(local_var_resp.status(), local_var_resp.headers(), backoff);
let local_var_content = local_var_resp.text().await?;
let local_var_entity: Option<ListGroupBillingInvoicesError> =
serde_json::from_str(&local_var_content).ok();
let local_var_error = ResponseContent {
status: local_var_status,
content: local_var_content,
entity: local_var_entity,
retry_delay: local_var_retry_delay,
};
Err(Error::ResponseError(local_var_error))
}
}
pub async fn list_group_billing_invoices(
configuration: &configuration::Configuration,
group_name: &str,
page_token: Option<&str>,
page_size: Option<i64>,
) -> Result<crate::models::ListAccountBillingInvoicesResponse, Error<ListGroupBillingInvoicesError>>
{
let mut backoff = configuration.backoff.clone();
let mut refreshed_credentials = false;
let method = reqwest::Method::GET;
loop {
let result = list_group_billing_invoices_inner(
configuration,
&mut backoff,
group_name.clone(),
page_token.clone(),
page_size.clone(),
)
.await;
match result {
Ok(result) => return Ok(result),
Err(Error::ResponseError(response)) => {
if !refreshed_credentials
&& matches!(
response.status,
StatusCode::FORBIDDEN | StatusCode::UNAUTHORIZED
)
{
configuration.qcs_config.refresh().await?;
refreshed_credentials = true;
continue;
} else if let Some(duration) = response.retry_delay {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::ResponseError(response));
}
Err(Error::Reqwest(error)) => {
if let Some(duration) = duration_from_reqwest_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Reqwest(error));
}
Err(Error::Io(error)) => {
if let Some(duration) = duration_from_io_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Io(error));
}
Err(error) => return Err(error),
}
}
}
async fn list_group_upcoming_billing_invoice_lines_inner(
configuration: &configuration::Configuration,
backoff: &mut ExponentialBackoff,
group_name: &str,
page_token: Option<&str>,
page_size: Option<i64>,
) -> Result<
crate::models::ListAccountBillingInvoiceLinesResponse,
Error<ListGroupUpcomingBillingInvoiceLinesError>,
> {
let local_var_configuration = configuration;
let local_var_client = &local_var_configuration.client;
let local_var_uri_str = format!(
"{}/v1/groups/{groupName}/billingInvoices:listUpcomingLines",
local_var_configuration.qcs_config.api_url(),
groupName = crate::apis::urlencode(group_name)
);
let mut local_var_req_builder =
local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
#[cfg(feature = "tracing")]
{
let local_var_do_tracing =
local_var_uri_str
.parse::<::url::Url>()
.ok()
.map_or(true, |url| {
configuration
.qcs_config
.should_trace(&::urlpattern::UrlPatternMatchInput::Url(url))
});
if local_var_do_tracing {
::tracing::debug!(
url=%local_var_uri_str,
method="GET",
"making list_group_upcoming_billing_invoice_lines request",
);
}
}
if let Some(ref local_var_str) = page_token {
local_var_req_builder =
local_var_req_builder.query(&[("pageToken", &local_var_str.to_string())]);
}
if let Some(ref local_var_str) = page_size {
local_var_req_builder =
local_var_req_builder.query(&[("pageSize", &local_var_str.to_string())]);
}
let token = configuration.qcs_config.get_bearer_access_token().await?;
local_var_req_builder = local_var_req_builder.bearer_auth(token);
let local_var_req = local_var_req_builder.build()?;
let local_var_resp = local_var_client.execute(local_var_req).await?;
let local_var_status = local_var_resp.status();
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
let local_var_content = local_var_resp.text().await?;
serde_json::from_str(&local_var_content).map_err(Error::from)
} else {
let local_var_retry_delay =
duration_from_response(local_var_resp.status(), local_var_resp.headers(), backoff);
let local_var_content = local_var_resp.text().await?;
let local_var_entity: Option<ListGroupUpcomingBillingInvoiceLinesError> =
serde_json::from_str(&local_var_content).ok();
let local_var_error = ResponseContent {
status: local_var_status,
content: local_var_content,
entity: local_var_entity,
retry_delay: local_var_retry_delay,
};
Err(Error::ResponseError(local_var_error))
}
}
pub async fn list_group_upcoming_billing_invoice_lines(
configuration: &configuration::Configuration,
group_name: &str,
page_token: Option<&str>,
page_size: Option<i64>,
) -> Result<
crate::models::ListAccountBillingInvoiceLinesResponse,
Error<ListGroupUpcomingBillingInvoiceLinesError>,
> {
let mut backoff = configuration.backoff.clone();
let mut refreshed_credentials = false;
let method = reqwest::Method::GET;
loop {
let result = list_group_upcoming_billing_invoice_lines_inner(
configuration,
&mut backoff,
group_name.clone(),
page_token.clone(),
page_size.clone(),
)
.await;
match result {
Ok(result) => return Ok(result),
Err(Error::ResponseError(response)) => {
if !refreshed_credentials
&& matches!(
response.status,
StatusCode::FORBIDDEN | StatusCode::UNAUTHORIZED
)
{
configuration.qcs_config.refresh().await?;
refreshed_credentials = true;
continue;
} else if let Some(duration) = response.retry_delay {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::ResponseError(response));
}
Err(Error::Reqwest(error)) => {
if let Some(duration) = duration_from_reqwest_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Reqwest(error));
}
Err(Error::Io(error)) => {
if let Some(duration) = duration_from_io_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Io(error));
}
Err(error) => return Err(error),
}
}
}
async fn list_group_users_inner(
configuration: &configuration::Configuration,
backoff: &mut ExponentialBackoff,
group_name: &str,
page_size: Option<i64>,
page_token: Option<&str>,
) -> Result<crate::models::ListGroupUsersResponse, Error<ListGroupUsersError>> {
let local_var_configuration = configuration;
let local_var_client = &local_var_configuration.client;
let local_var_uri_str = format!(
"{}/v1/groups/{groupName}/users",
local_var_configuration.qcs_config.api_url(),
groupName = crate::apis::urlencode(group_name)
);
let mut local_var_req_builder =
local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
#[cfg(feature = "tracing")]
{
let local_var_do_tracing =
local_var_uri_str
.parse::<::url::Url>()
.ok()
.map_or(true, |url| {
configuration
.qcs_config
.should_trace(&::urlpattern::UrlPatternMatchInput::Url(url))
});
if local_var_do_tracing {
::tracing::debug!(
url=%local_var_uri_str,
method="GET",
"making list_group_users request",
);
}
}
if let Some(ref local_var_str) = page_size {
local_var_req_builder =
local_var_req_builder.query(&[("pageSize", &local_var_str.to_string())]);
}
if let Some(ref local_var_str) = page_token {
local_var_req_builder =
local_var_req_builder.query(&[("pageToken", &local_var_str.to_string())]);
}
let token = configuration.qcs_config.get_bearer_access_token().await?;
local_var_req_builder = local_var_req_builder.bearer_auth(token);
let local_var_req = local_var_req_builder.build()?;
let local_var_resp = local_var_client.execute(local_var_req).await?;
let local_var_status = local_var_resp.status();
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
let local_var_content = local_var_resp.text().await?;
serde_json::from_str(&local_var_content).map_err(Error::from)
} else {
let local_var_retry_delay =
duration_from_response(local_var_resp.status(), local_var_resp.headers(), backoff);
let local_var_content = local_var_resp.text().await?;
let local_var_entity: Option<ListGroupUsersError> =
serde_json::from_str(&local_var_content).ok();
let local_var_error = ResponseContent {
status: local_var_status,
content: local_var_content,
entity: local_var_entity,
retry_delay: local_var_retry_delay,
};
Err(Error::ResponseError(local_var_error))
}
}
pub async fn list_group_users(
configuration: &configuration::Configuration,
group_name: &str,
page_size: Option<i64>,
page_token: Option<&str>,
) -> Result<crate::models::ListGroupUsersResponse, Error<ListGroupUsersError>> {
let mut backoff = configuration.backoff.clone();
let mut refreshed_credentials = false;
let method = reqwest::Method::GET;
loop {
let result = list_group_users_inner(
configuration,
&mut backoff,
group_name.clone(),
page_size.clone(),
page_token.clone(),
)
.await;
match result {
Ok(result) => return Ok(result),
Err(Error::ResponseError(response)) => {
if !refreshed_credentials
&& matches!(
response.status,
StatusCode::FORBIDDEN | StatusCode::UNAUTHORIZED
)
{
configuration.qcs_config.refresh().await?;
refreshed_credentials = true;
continue;
} else if let Some(duration) = response.retry_delay {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::ResponseError(response));
}
Err(Error::Reqwest(error)) => {
if let Some(duration) = duration_from_reqwest_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Reqwest(error));
}
Err(Error::Io(error)) => {
if let Some(duration) = duration_from_io_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Io(error));
}
Err(error) => return Err(error),
}
}
}
async fn list_user_billing_invoice_lines_inner(
configuration: &configuration::Configuration,
backoff: &mut ExponentialBackoff,
user_id: &str,
billing_invoice_id: &str,
page_token: Option<&str>,
page_size: Option<i64>,
) -> Result<
crate::models::ListAccountBillingInvoiceLinesResponse,
Error<ListUserBillingInvoiceLinesError>,
> {
let local_var_configuration = configuration;
let local_var_client = &local_var_configuration.client;
let local_var_uri_str = format!(
"{}/v1/users/{userId}/billingInvoices/{billingInvoiceId}/lines",
local_var_configuration.qcs_config.api_url(),
userId = crate::apis::urlencode(user_id),
billingInvoiceId = crate::apis::urlencode(billing_invoice_id)
);
let mut local_var_req_builder =
local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
#[cfg(feature = "tracing")]
{
let local_var_do_tracing =
local_var_uri_str
.parse::<::url::Url>()
.ok()
.map_or(true, |url| {
configuration
.qcs_config
.should_trace(&::urlpattern::UrlPatternMatchInput::Url(url))
});
if local_var_do_tracing {
::tracing::debug!(
url=%local_var_uri_str,
method="GET",
"making list_user_billing_invoice_lines request",
);
}
}
if let Some(ref local_var_str) = page_token {
local_var_req_builder =
local_var_req_builder.query(&[("pageToken", &local_var_str.to_string())]);
}
if let Some(ref local_var_str) = page_size {
local_var_req_builder =
local_var_req_builder.query(&[("pageSize", &local_var_str.to_string())]);
}
let token = configuration.qcs_config.get_bearer_access_token().await?;
local_var_req_builder = local_var_req_builder.bearer_auth(token);
let local_var_req = local_var_req_builder.build()?;
let local_var_resp = local_var_client.execute(local_var_req).await?;
let local_var_status = local_var_resp.status();
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
let local_var_content = local_var_resp.text().await?;
serde_json::from_str(&local_var_content).map_err(Error::from)
} else {
let local_var_retry_delay =
duration_from_response(local_var_resp.status(), local_var_resp.headers(), backoff);
let local_var_content = local_var_resp.text().await?;
let local_var_entity: Option<ListUserBillingInvoiceLinesError> =
serde_json::from_str(&local_var_content).ok();
let local_var_error = ResponseContent {
status: local_var_status,
content: local_var_content,
entity: local_var_entity,
retry_delay: local_var_retry_delay,
};
Err(Error::ResponseError(local_var_error))
}
}
pub async fn list_user_billing_invoice_lines(
configuration: &configuration::Configuration,
user_id: &str,
billing_invoice_id: &str,
page_token: Option<&str>,
page_size: Option<i64>,
) -> Result<
crate::models::ListAccountBillingInvoiceLinesResponse,
Error<ListUserBillingInvoiceLinesError>,
> {
let mut backoff = configuration.backoff.clone();
let mut refreshed_credentials = false;
let method = reqwest::Method::GET;
loop {
let result = list_user_billing_invoice_lines_inner(
configuration,
&mut backoff,
user_id.clone(),
billing_invoice_id.clone(),
page_token.clone(),
page_size.clone(),
)
.await;
match result {
Ok(result) => return Ok(result),
Err(Error::ResponseError(response)) => {
if !refreshed_credentials
&& matches!(
response.status,
StatusCode::FORBIDDEN | StatusCode::UNAUTHORIZED
)
{
configuration.qcs_config.refresh().await?;
refreshed_credentials = true;
continue;
} else if let Some(duration) = response.retry_delay {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::ResponseError(response));
}
Err(Error::Reqwest(error)) => {
if let Some(duration) = duration_from_reqwest_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Reqwest(error));
}
Err(Error::Io(error)) => {
if let Some(duration) = duration_from_io_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Io(error));
}
Err(error) => return Err(error),
}
}
}
async fn list_user_billing_invoices_inner(
configuration: &configuration::Configuration,
backoff: &mut ExponentialBackoff,
user_id: &str,
page_token: Option<&str>,
page_size: Option<i64>,
) -> Result<crate::models::ListAccountBillingInvoicesResponse, Error<ListUserBillingInvoicesError>>
{
let local_var_configuration = configuration;
let local_var_client = &local_var_configuration.client;
let local_var_uri_str = format!(
"{}/v1/users/{userId}/billingInvoices",
local_var_configuration.qcs_config.api_url(),
userId = crate::apis::urlencode(user_id)
);
let mut local_var_req_builder =
local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
#[cfg(feature = "tracing")]
{
let local_var_do_tracing =
local_var_uri_str
.parse::<::url::Url>()
.ok()
.map_or(true, |url| {
configuration
.qcs_config
.should_trace(&::urlpattern::UrlPatternMatchInput::Url(url))
});
if local_var_do_tracing {
::tracing::debug!(
url=%local_var_uri_str,
method="GET",
"making list_user_billing_invoices request",
);
}
}
if let Some(ref local_var_str) = page_token {
local_var_req_builder =
local_var_req_builder.query(&[("pageToken", &local_var_str.to_string())]);
}
if let Some(ref local_var_str) = page_size {
local_var_req_builder =
local_var_req_builder.query(&[("pageSize", &local_var_str.to_string())]);
}
let token = configuration.qcs_config.get_bearer_access_token().await?;
local_var_req_builder = local_var_req_builder.bearer_auth(token);
let local_var_req = local_var_req_builder.build()?;
let local_var_resp = local_var_client.execute(local_var_req).await?;
let local_var_status = local_var_resp.status();
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
let local_var_content = local_var_resp.text().await?;
serde_json::from_str(&local_var_content).map_err(Error::from)
} else {
let local_var_retry_delay =
duration_from_response(local_var_resp.status(), local_var_resp.headers(), backoff);
let local_var_content = local_var_resp.text().await?;
let local_var_entity: Option<ListUserBillingInvoicesError> =
serde_json::from_str(&local_var_content).ok();
let local_var_error = ResponseContent {
status: local_var_status,
content: local_var_content,
entity: local_var_entity,
retry_delay: local_var_retry_delay,
};
Err(Error::ResponseError(local_var_error))
}
}
pub async fn list_user_billing_invoices(
configuration: &configuration::Configuration,
user_id: &str,
page_token: Option<&str>,
page_size: Option<i64>,
) -> Result<crate::models::ListAccountBillingInvoicesResponse, Error<ListUserBillingInvoicesError>>
{
let mut backoff = configuration.backoff.clone();
let mut refreshed_credentials = false;
let method = reqwest::Method::GET;
loop {
let result = list_user_billing_invoices_inner(
configuration,
&mut backoff,
user_id.clone(),
page_token.clone(),
page_size.clone(),
)
.await;
match result {
Ok(result) => return Ok(result),
Err(Error::ResponseError(response)) => {
if !refreshed_credentials
&& matches!(
response.status,
StatusCode::FORBIDDEN | StatusCode::UNAUTHORIZED
)
{
configuration.qcs_config.refresh().await?;
refreshed_credentials = true;
continue;
} else if let Some(duration) = response.retry_delay {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::ResponseError(response));
}
Err(Error::Reqwest(error)) => {
if let Some(duration) = duration_from_reqwest_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Reqwest(error));
}
Err(Error::Io(error)) => {
if let Some(duration) = duration_from_io_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Io(error));
}
Err(error) => return Err(error),
}
}
}
async fn list_user_groups_inner(
configuration: &configuration::Configuration,
backoff: &mut ExponentialBackoff,
user_id: &str,
page_size: Option<i64>,
page_token: Option<&str>,
) -> Result<crate::models::ListGroupsResponse, Error<ListUserGroupsError>> {
let local_var_configuration = configuration;
let local_var_client = &local_var_configuration.client;
let local_var_uri_str = format!(
"{}/v1/users/{userId}/groups",
local_var_configuration.qcs_config.api_url(),
userId = crate::apis::urlencode(user_id)
);
let mut local_var_req_builder =
local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
#[cfg(feature = "tracing")]
{
let local_var_do_tracing =
local_var_uri_str
.parse::<::url::Url>()
.ok()
.map_or(true, |url| {
configuration
.qcs_config
.should_trace(&::urlpattern::UrlPatternMatchInput::Url(url))
});
if local_var_do_tracing {
::tracing::debug!(
url=%local_var_uri_str,
method="GET",
"making list_user_groups request",
);
}
}
if let Some(ref local_var_str) = page_size {
local_var_req_builder =
local_var_req_builder.query(&[("pageSize", &local_var_str.to_string())]);
}
if let Some(ref local_var_str) = page_token {
local_var_req_builder =
local_var_req_builder.query(&[("pageToken", &local_var_str.to_string())]);
}
let token = configuration.qcs_config.get_bearer_access_token().await?;
local_var_req_builder = local_var_req_builder.bearer_auth(token);
let local_var_req = local_var_req_builder.build()?;
let local_var_resp = local_var_client.execute(local_var_req).await?;
let local_var_status = local_var_resp.status();
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
let local_var_content = local_var_resp.text().await?;
serde_json::from_str(&local_var_content).map_err(Error::from)
} else {
let local_var_retry_delay =
duration_from_response(local_var_resp.status(), local_var_resp.headers(), backoff);
let local_var_content = local_var_resp.text().await?;
let local_var_entity: Option<ListUserGroupsError> =
serde_json::from_str(&local_var_content).ok();
let local_var_error = ResponseContent {
status: local_var_status,
content: local_var_content,
entity: local_var_entity,
retry_delay: local_var_retry_delay,
};
Err(Error::ResponseError(local_var_error))
}
}
pub async fn list_user_groups(
configuration: &configuration::Configuration,
user_id: &str,
page_size: Option<i64>,
page_token: Option<&str>,
) -> Result<crate::models::ListGroupsResponse, Error<ListUserGroupsError>> {
let mut backoff = configuration.backoff.clone();
let mut refreshed_credentials = false;
let method = reqwest::Method::GET;
loop {
let result = list_user_groups_inner(
configuration,
&mut backoff,
user_id.clone(),
page_size.clone(),
page_token.clone(),
)
.await;
match result {
Ok(result) => return Ok(result),
Err(Error::ResponseError(response)) => {
if !refreshed_credentials
&& matches!(
response.status,
StatusCode::FORBIDDEN | StatusCode::UNAUTHORIZED
)
{
configuration.qcs_config.refresh().await?;
refreshed_credentials = true;
continue;
} else if let Some(duration) = response.retry_delay {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::ResponseError(response));
}
Err(Error::Reqwest(error)) => {
if let Some(duration) = duration_from_reqwest_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Reqwest(error));
}
Err(Error::Io(error)) => {
if let Some(duration) = duration_from_io_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Io(error));
}
Err(error) => return Err(error),
}
}
}
async fn list_user_upcoming_billing_invoice_lines_inner(
configuration: &configuration::Configuration,
backoff: &mut ExponentialBackoff,
user_id: &str,
page_token: Option<&str>,
page_size: Option<i64>,
) -> Result<
crate::models::ListAccountBillingInvoiceLinesResponse,
Error<ListUserUpcomingBillingInvoiceLinesError>,
> {
let local_var_configuration = configuration;
let local_var_client = &local_var_configuration.client;
let local_var_uri_str = format!(
"{}/v1/users/{userId}/billingInvoices:listUpcomingLines",
local_var_configuration.qcs_config.api_url(),
userId = crate::apis::urlencode(user_id)
);
let mut local_var_req_builder =
local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
#[cfg(feature = "tracing")]
{
let local_var_do_tracing =
local_var_uri_str
.parse::<::url::Url>()
.ok()
.map_or(true, |url| {
configuration
.qcs_config
.should_trace(&::urlpattern::UrlPatternMatchInput::Url(url))
});
if local_var_do_tracing {
::tracing::debug!(
url=%local_var_uri_str,
method="GET",
"making list_user_upcoming_billing_invoice_lines request",
);
}
}
if let Some(ref local_var_str) = page_token {
local_var_req_builder =
local_var_req_builder.query(&[("pageToken", &local_var_str.to_string())]);
}
if let Some(ref local_var_str) = page_size {
local_var_req_builder =
local_var_req_builder.query(&[("pageSize", &local_var_str.to_string())]);
}
let token = configuration.qcs_config.get_bearer_access_token().await?;
local_var_req_builder = local_var_req_builder.bearer_auth(token);
let local_var_req = local_var_req_builder.build()?;
let local_var_resp = local_var_client.execute(local_var_req).await?;
let local_var_status = local_var_resp.status();
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
let local_var_content = local_var_resp.text().await?;
serde_json::from_str(&local_var_content).map_err(Error::from)
} else {
let local_var_retry_delay =
duration_from_response(local_var_resp.status(), local_var_resp.headers(), backoff);
let local_var_content = local_var_resp.text().await?;
let local_var_entity: Option<ListUserUpcomingBillingInvoiceLinesError> =
serde_json::from_str(&local_var_content).ok();
let local_var_error = ResponseContent {
status: local_var_status,
content: local_var_content,
entity: local_var_entity,
retry_delay: local_var_retry_delay,
};
Err(Error::ResponseError(local_var_error))
}
}
pub async fn list_user_upcoming_billing_invoice_lines(
configuration: &configuration::Configuration,
user_id: &str,
page_token: Option<&str>,
page_size: Option<i64>,
) -> Result<
crate::models::ListAccountBillingInvoiceLinesResponse,
Error<ListUserUpcomingBillingInvoiceLinesError>,
> {
let mut backoff = configuration.backoff.clone();
let mut refreshed_credentials = false;
let method = reqwest::Method::GET;
loop {
let result = list_user_upcoming_billing_invoice_lines_inner(
configuration,
&mut backoff,
user_id.clone(),
page_token.clone(),
page_size.clone(),
)
.await;
match result {
Ok(result) => return Ok(result),
Err(Error::ResponseError(response)) => {
if !refreshed_credentials
&& matches!(
response.status,
StatusCode::FORBIDDEN | StatusCode::UNAUTHORIZED
)
{
configuration.qcs_config.refresh().await?;
refreshed_credentials = true;
continue;
} else if let Some(duration) = response.retry_delay {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::ResponseError(response));
}
Err(Error::Reqwest(error)) => {
if let Some(duration) = duration_from_reqwest_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Reqwest(error));
}
Err(Error::Io(error)) => {
if let Some(duration) = duration_from_io_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Io(error));
}
Err(error) => return Err(error),
}
}
}
async fn remove_group_user_inner(
configuration: &configuration::Configuration,
backoff: &mut ExponentialBackoff,
remove_group_user_request: crate::models::RemoveGroupUserRequest,
) -> Result<(), Error<RemoveGroupUserError>> {
let local_var_configuration = configuration;
let local_var_client = &local_var_configuration.client;
let local_var_uri_str = format!(
"{}/v1/groups:removeUser",
local_var_configuration.qcs_config.api_url()
);
let mut local_var_req_builder =
local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
#[cfg(feature = "tracing")]
{
let local_var_do_tracing =
local_var_uri_str
.parse::<::url::Url>()
.ok()
.map_or(true, |url| {
configuration
.qcs_config
.should_trace(&::urlpattern::UrlPatternMatchInput::Url(url))
});
if local_var_do_tracing {
::tracing::debug!(
url=%local_var_uri_str,
method="POST",
"making remove_group_user request",
);
}
}
let token = configuration.qcs_config.get_bearer_access_token().await?;
local_var_req_builder = local_var_req_builder.bearer_auth(token);
local_var_req_builder = local_var_req_builder.json(&remove_group_user_request);
let local_var_req = local_var_req_builder.build()?;
let local_var_resp = local_var_client.execute(local_var_req).await?;
let local_var_status = local_var_resp.status();
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
Ok(())
} else {
let local_var_retry_delay =
duration_from_response(local_var_resp.status(), local_var_resp.headers(), backoff);
let local_var_content = local_var_resp.text().await?;
let local_var_entity: Option<RemoveGroupUserError> =
serde_json::from_str(&local_var_content).ok();
let local_var_error = ResponseContent {
status: local_var_status,
content: local_var_content,
entity: local_var_entity,
retry_delay: local_var_retry_delay,
};
Err(Error::ResponseError(local_var_error))
}
}
pub async fn remove_group_user(
configuration: &configuration::Configuration,
remove_group_user_request: crate::models::RemoveGroupUserRequest,
) -> Result<(), Error<RemoveGroupUserError>> {
let mut backoff = configuration.backoff.clone();
let mut refreshed_credentials = false;
let method = reqwest::Method::POST;
loop {
let result = remove_group_user_inner(
configuration,
&mut backoff,
remove_group_user_request.clone(),
)
.await;
match result {
Ok(result) => return Ok(result),
Err(Error::ResponseError(response)) => {
if !refreshed_credentials
&& matches!(
response.status,
StatusCode::FORBIDDEN | StatusCode::UNAUTHORIZED
)
{
configuration.qcs_config.refresh().await?;
refreshed_credentials = true;
continue;
} else if let Some(duration) = response.retry_delay {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::ResponseError(response));
}
Err(Error::Reqwest(error)) => {
if let Some(duration) = duration_from_reqwest_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Reqwest(error));
}
Err(Error::Io(error)) => {
if let Some(duration) = duration_from_io_error(&method, &error, &mut backoff) {
tokio::time::sleep(duration).await;
continue;
}
return Err(Error::Io(error));
}
Err(error) => return Err(error),
}
}
}