use super::{configuration, Error};
use crate::apis::ResponseContent;
#[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 CreateEndpointError {
Status400(crate::models::Error),
Status404(crate::models::Error),
Status422(crate::models::ValidationError),
UnknownValue(serde_json::Value),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum DeleteEndpointError {
Status403(crate::models::Error),
Status404(crate::models::Error),
Status422(crate::models::ValidationError),
UnknownValue(serde_json::Value),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum GetDefaultEndpointError {
Status404(crate::models::Error),
Status422(crate::models::ValidationError),
UnknownValue(serde_json::Value),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum GetEndpointError {
Status404(crate::models::Error),
Status422(crate::models::ValidationError),
UnknownValue(serde_json::Value),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum ListEndpointsError {
Status422(crate::models::ValidationError),
UnknownValue(serde_json::Value),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum RestartEndpointError {
Status403(crate::models::Error),
Status422(crate::models::ValidationError),
UnknownValue(serde_json::Value),
}
async fn create_endpoint_inner(
configuration: &configuration::Configuration,
create_endpoint_parameters: crate::models::CreateEndpointParameters,
) -> Result<crate::models::Endpoint, Error<CreateEndpointError>> {
let local_var_configuration = configuration;
let local_var_client = &local_var_configuration.client;
let local_var_uri_str = format!(
"{}/v1/endpoints",
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 create_endpoint 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(&create_endpoint_parameters);
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();
let local_var_content = local_var_resp.text().await?;
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
serde_json::from_str(&local_var_content).map_err(Error::from)
} else {
let local_var_entity: Option<CreateEndpointError> =
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,
};
Err(Error::ResponseError(local_var_error))
}
}
pub async fn create_endpoint(
configuration: &configuration::Configuration,
create_endpoint_parameters: crate::models::CreateEndpointParameters,
) -> Result<crate::models::Endpoint, Error<CreateEndpointError>> {
match create_endpoint_inner(configuration, create_endpoint_parameters.clone()).await {
Ok(result) => Ok(result),
Err(err) => match err.status_code() {
Some(StatusCode::FORBIDDEN | StatusCode::UNAUTHORIZED) => {
configuration.qcs_config.refresh().await?;
create_endpoint_inner(configuration, create_endpoint_parameters).await
}
_ => Err(err),
},
}
}
async fn delete_endpoint_inner(
configuration: &configuration::Configuration,
endpoint_id: &str,
) -> Result<(), Error<DeleteEndpointError>> {
let local_var_configuration = configuration;
let local_var_client = &local_var_configuration.client;
let local_var_uri_str = format!(
"{}/v1/endpoints/{endpointId}",
local_var_configuration.qcs_config.api_url(),
endpointId = crate::apis::urlencode(endpoint_id)
);
let mut local_var_req_builder =
local_var_client.request(reqwest::Method::DELETE, 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="DELETE",
"making delete_endpoint 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();
let local_var_content = local_var_resp.text().await?;
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
Ok(())
} else {
let local_var_entity: Option<DeleteEndpointError> =
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,
};
Err(Error::ResponseError(local_var_error))
}
}
pub async fn delete_endpoint(
configuration: &configuration::Configuration,
endpoint_id: &str,
) -> Result<(), Error<DeleteEndpointError>> {
match delete_endpoint_inner(configuration, endpoint_id.clone()).await {
Ok(result) => Ok(result),
Err(err) => match err.status_code() {
Some(StatusCode::FORBIDDEN | StatusCode::UNAUTHORIZED) => {
configuration.qcs_config.refresh().await?;
delete_endpoint_inner(configuration, endpoint_id).await
}
_ => Err(err),
},
}
}
async fn get_default_endpoint_inner(
configuration: &configuration::Configuration,
quantum_processor_id: &str,
) -> Result<crate::models::Endpoint, Error<GetDefaultEndpointError>> {
let local_var_configuration = configuration;
let local_var_client = &local_var_configuration.client;
let local_var_uri_str = format!(
"{}/v1/quantumProcessors/{quantumProcessorId}/endpoints:getDefault",
local_var_configuration.qcs_config.api_url(),
quantumProcessorId = crate::apis::urlencode(quantum_processor_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_default_endpoint 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();
let local_var_content = local_var_resp.text().await?;
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
serde_json::from_str(&local_var_content).map_err(Error::from)
} else {
let local_var_entity: Option<GetDefaultEndpointError> =
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,
};
Err(Error::ResponseError(local_var_error))
}
}
pub async fn get_default_endpoint(
configuration: &configuration::Configuration,
quantum_processor_id: &str,
) -> Result<crate::models::Endpoint, Error<GetDefaultEndpointError>> {
match get_default_endpoint_inner(configuration, quantum_processor_id.clone()).await {
Ok(result) => Ok(result),
Err(err) => match err.status_code() {
Some(StatusCode::FORBIDDEN | StatusCode::UNAUTHORIZED) => {
configuration.qcs_config.refresh().await?;
get_default_endpoint_inner(configuration, quantum_processor_id).await
}
_ => Err(err),
},
}
}
async fn get_endpoint_inner(
configuration: &configuration::Configuration,
endpoint_id: &str,
) -> Result<crate::models::Endpoint, Error<GetEndpointError>> {
let local_var_configuration = configuration;
let local_var_client = &local_var_configuration.client;
let local_var_uri_str = format!(
"{}/v1/endpoints/{endpointId}",
local_var_configuration.qcs_config.api_url(),
endpointId = crate::apis::urlencode(endpoint_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_endpoint 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();
let local_var_content = local_var_resp.text().await?;
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
serde_json::from_str(&local_var_content).map_err(Error::from)
} else {
let local_var_entity: Option<GetEndpointError> =
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,
};
Err(Error::ResponseError(local_var_error))
}
}
pub async fn get_endpoint(
configuration: &configuration::Configuration,
endpoint_id: &str,
) -> Result<crate::models::Endpoint, Error<GetEndpointError>> {
match get_endpoint_inner(configuration, endpoint_id.clone()).await {
Ok(result) => Ok(result),
Err(err) => match err.status_code() {
Some(StatusCode::FORBIDDEN | StatusCode::UNAUTHORIZED) => {
configuration.qcs_config.refresh().await?;
get_endpoint_inner(configuration, endpoint_id).await
}
_ => Err(err),
},
}
}
async fn list_endpoints_inner(
configuration: &configuration::Configuration,
filter: Option<&str>,
page_size: Option<i64>,
page_token: Option<&str>,
) -> Result<crate::models::ListEndpointsResponse, Error<ListEndpointsError>> {
let local_var_configuration = configuration;
let local_var_client = &local_var_configuration.client;
let local_var_uri_str = format!(
"{}/v1/endpoints",
local_var_configuration.qcs_config.api_url()
);
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_endpoints request",
);
}
}
if let Some(ref local_var_str) = filter {
local_var_req_builder =
local_var_req_builder.query(&[("filter", &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())]);
}
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();
let local_var_content = local_var_resp.text().await?;
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
serde_json::from_str(&local_var_content).map_err(Error::from)
} else {
let local_var_entity: Option<ListEndpointsError> =
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,
};
Err(Error::ResponseError(local_var_error))
}
}
pub async fn list_endpoints(
configuration: &configuration::Configuration,
filter: Option<&str>,
page_size: Option<i64>,
page_token: Option<&str>,
) -> Result<crate::models::ListEndpointsResponse, Error<ListEndpointsError>> {
match list_endpoints_inner(
configuration,
filter.clone(),
page_size.clone(),
page_token.clone(),
)
.await
{
Ok(result) => Ok(result),
Err(err) => match err.status_code() {
Some(StatusCode::FORBIDDEN | StatusCode::UNAUTHORIZED) => {
configuration.qcs_config.refresh().await?;
list_endpoints_inner(configuration, filter, page_size, page_token).await
}
_ => Err(err),
},
}
}
async fn restart_endpoint_inner(
configuration: &configuration::Configuration,
endpoint_id: &str,
restart_endpoint_request: Option<crate::models::RestartEndpointRequest>,
) -> Result<(), Error<RestartEndpointError>> {
let local_var_configuration = configuration;
let local_var_client = &local_var_configuration.client;
let local_var_uri_str = format!(
"{}/v1/endpoints/{endpointId}:restart",
local_var_configuration.qcs_config.api_url(),
endpointId = crate::apis::urlencode(endpoint_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 restart_endpoint 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(&restart_endpoint_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();
let local_var_content = local_var_resp.text().await?;
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
Ok(())
} else {
let local_var_entity: Option<RestartEndpointError> =
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,
};
Err(Error::ResponseError(local_var_error))
}
}
pub async fn restart_endpoint(
configuration: &configuration::Configuration,
endpoint_id: &str,
restart_endpoint_request: Option<crate::models::RestartEndpointRequest>,
) -> Result<(), Error<RestartEndpointError>> {
match restart_endpoint_inner(
configuration,
endpoint_id.clone(),
restart_endpoint_request.clone(),
)
.await
{
Ok(result) => Ok(result),
Err(err) => match err.status_code() {
Some(StatusCode::FORBIDDEN | StatusCode::UNAUTHORIZED) => {
configuration.qcs_config.refresh().await?;
restart_endpoint_inner(configuration, endpoint_id, restart_endpoint_request).await
}
_ => Err(err),
},
}
}