#![cfg(feature = "cloudflare_shares")]
#![allow(clippy::too_many_arguments, clippy::type_complexity)]
#![allow(clippy::missing_errors_doc, clippy::doc_markdown, clippy::useless_format)]
#![allow(unused_imports)]
use foundation_netio::{DynNetClient, PreparedRequestBuilder};
use foundation_netio::shared::client::http_client::HttpClient;
use serde::{Deserialize, Serialize};
use foundation_macros::JsonHash;
use super::shared::ResourceSharingShareResponseCollection;
use super::shared::ResourceSharingAccountId;
use super::shared::ResourceSharingAccountName;
use super::shared::ResourceSharingApiResponseCollection;
use super::shared::ResourceSharingApiResponseCommon;
use super::shared::ResourceSharingCreated;
use super::shared::ResourceSharingModified;
use super::shared::ResourceSharingOrganizationId;
use super::shared::ResourceSharingResourceId;
use super::shared::ResourceSharingResourceMeta;
use super::shared::ResourceSharingResourceResourceId;
use super::shared::ResourceSharingResourceStatus;
use super::shared::ResourceSharingResourceType;
use super::shared::ResourceSharingResourceVersion;
use super::shared::ResourceSharingResultInfo;
use super::shared::ResourceSharingShareId;
use super::shared::ResourceSharingShareKind;
use super::shared::ResourceSharingShareName;
use super::shared::ResourceSharingShareObject;
use super::shared::ResourceSharingShareResourceObject;
use super::shared::ResourceSharingShareStatus;
use super::shared::ResourceSharingShareTargetType;
use super::shared::ResourceSharingV4Error;
use super::shared::ApiResponse;
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonHash)]
pub struct ResourceSharingCreateShareRecipientRequest {
pub account_id: Option<ResourceSharingAccountId>,
pub organization_id: Option<ResourceSharingOrganizationId>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonHash)]
pub struct ResourceSharingCreateShareRequest {
pub name: ResourceSharingShareName,
pub recipients: Vec<ResourceSharingCreateShareRecipientRequest>,
pub resources: Vec<ResourceSharingCreateShareResourceRequest>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonHash)]
pub struct ResourceSharingCreateShareResourceRequest {
pub meta: ResourceSharingResourceMeta,
pub resource_account_id: ResourceSharingAccountId,
pub resource_id: ResourceSharingResourceResourceId,
pub resource_type: ResourceSharingResourceType,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonHash)]
pub struct ResourceSharingRecipientAssociationStatus {
#[serde(flatten)]
pub data: std::collections::HashMap<String, serde_json::Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonHash)]
pub struct ResourceSharingRecipientId {
#[serde(flatten)]
pub data: std::collections::HashMap<String, serde_json::Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonHash)]
pub struct ResourceSharingRecipientResourceError {
#[serde(flatten)]
pub data: std::collections::HashMap<String, serde_json::Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonHash)]
pub struct ResourceSharingRecipientResourceErrorTerminal {
#[serde(flatten)]
pub data: std::collections::HashMap<String, serde_json::Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonHash)]
pub struct ResourceSharingShareRecipientObject {
pub account_id: ResourceSharingAccountId,
pub association_status: ResourceSharingRecipientAssociationStatus,
pub created: ResourceSharingCreated,
pub id: ResourceSharingRecipientId,
pub modified: ResourceSharingModified,
pub resources: Option<Vec<ResourceSharingShareRecipientResourceObject>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonHash)]
pub struct ResourceSharingShareRecipientResourceObject {
pub error: ResourceSharingRecipientResourceError,
pub resource_id: ResourceSharingResourceResourceId,
pub resource_version: ResourceSharingResourceVersion,
pub terminal: ResourceSharingRecipientResourceErrorTerminal,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonHash)]
pub struct ResourceSharingShareRecipientResponseCollection {
pub result: Option<Vec<ResourceSharingShareRecipientObject>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonHash)]
pub struct ResourceSharingShareRecipientResponseSingle {
pub result: Option<ResourceSharingShareRecipientObject>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonHash)]
pub struct ResourceSharingShareResourceResponseCollection {
pub result: Option<Vec<ResourceSharingShareResourceObject>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonHash)]
pub struct ResourceSharingShareResourceResponseSingle {
pub result: Option<ResourceSharingShareResourceObject>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonHash)]
pub struct ResourceSharingShareResponseSingle {
pub result: Option<ResourceSharingShareObject>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonHash)]
pub struct ResourceSharingUpdateShareRequest {
pub name: ResourceSharingShareName,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonHash)]
pub struct ResourceSharingUpdateShareResourceRequest {
pub meta: ResourceSharingResourceMeta,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonHash)]
pub struct ResourceSharingV4Errors {
#[serde(flatten)]
pub data: std::collections::HashMap<String, serde_json::Value>,
}
#[derive(Debug, Clone, Default, Serialize, JsonHash)]
pub struct SharesListArgs {
pub account_id: String,
pub status: Option<String>,
pub kind: Option<String>,
pub target_type: Option<String>,
pub resource_types: Option<String>,
pub order: Option<String>,
pub direction: Option<String>,
pub page: Option<String>,
pub per_page: Option<String>,
pub include_resources: Option<String>,
pub include_recipient_counts: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, JsonHash)]
pub struct ShareCreateArgs {
pub account_id: String,
pub body: ResourceSharingCreateShareRequest,
}
#[derive(Debug, Clone, Default, Serialize, JsonHash)]
pub struct SharesGetByIdArgs {
pub account_id: String,
pub share_id: String,
pub include_resources: Option<String>,
pub include_recipient_counts: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, JsonHash)]
pub struct ShareUpdateArgs {
pub account_id: String,
pub share_id: String,
pub body: ResourceSharingUpdateShareRequest,
}
#[derive(Debug, Clone, Default, Serialize, JsonHash)]
pub struct ShareDeleteArgs {
pub account_id: String,
pub share_id: String,
}
#[derive(Debug, Clone, Default, Serialize, JsonHash)]
pub struct ShareRecipientsListArgs {
pub account_id: String,
pub share_id: String,
pub include_resources: Option<String>,
pub page: Option<String>,
pub per_page: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, JsonHash)]
pub struct ShareRecipientCreateArgs {
pub account_id: String,
pub share_id: String,
pub body: ResourceSharingCreateShareRecipientRequest,
}
#[derive(Debug, Clone, Default, Serialize, JsonHash)]
pub struct ShareRecipientsUpdateArgs {
pub account_id: String,
pub share_id: String,
pub body: Vec<ResourceSharingCreateShareRecipientRequest>,
}
#[derive(Debug, Clone, Default, Serialize, JsonHash)]
pub struct ShareRecipientsGetByIdArgs {
pub account_id: String,
pub share_id: String,
pub recipient_id: String,
pub include_resources: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, JsonHash)]
pub struct ShareRecipientDeleteArgs {
pub account_id: String,
pub share_id: String,
pub recipient_id: String,
}
#[derive(Debug, Clone, Default, Serialize, JsonHash)]
pub struct ShareResourcesListArgs {
pub account_id: String,
pub share_id: String,
pub status: Option<String>,
pub resource_type: Option<String>,
pub page: Option<String>,
pub per_page: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, JsonHash)]
pub struct ShareResourceCreateArgs {
pub account_id: String,
pub share_id: String,
pub body: ResourceSharingCreateShareResourceRequest,
}
#[derive(Debug, Clone, Default, Serialize, JsonHash)]
pub struct ShareResourcesGetByIdArgs {
pub account_id: String,
pub share_id: String,
pub resource_id: String,
}
#[derive(Debug, Clone, Default, Serialize, JsonHash)]
pub struct ShareResourceUpdateArgs {
pub account_id: String,
pub share_id: String,
pub resource_id: String,
pub body: ResourceSharingUpdateShareResourceRequest,
}
#[derive(Debug, Clone, Default, Serialize, JsonHash)]
pub struct ShareResourceDeleteArgs {
pub account_id: String,
pub share_id: String,
pub resource_id: String,
}
pub async fn shares_list_request<F>(
client: DynNetClient,
args: &SharesListArgs,
base_url: &str,
builder_mod: Option<F>,
) -> Result<ApiResponse<ResourceSharingShareResponseCollection>, super::shared::ApiError>
where
F: FnOnce(&mut PreparedRequestBuilder),
{
let path = format!("/accounts/{}/shares",
args.account_id,
);
let endpoint_url = format!("{}{}", base_url, path);
let mut builder = PreparedRequestBuilder::get(&endpoint_url)
.map_err(|e| super::shared::ApiError::RequestBuildFailed(e.to_string()))?;
builder = builder.query("status", args.status.as_deref());
builder = builder.query("kind", args.kind.as_deref());
builder = builder.query("target_type", args.target_type.as_deref());
builder = builder.query("resource_types", args.resource_types.as_deref());
builder = builder.query("order", args.order.as_deref());
builder = builder.query("direction", args.direction.as_deref());
builder = builder.query("page", args.page.as_deref());
builder = builder.query("per_page", args.per_page.as_deref());
builder = builder.query("include_resources", args.include_resources.as_deref());
builder = builder.query("include_recipient_counts", args.include_recipient_counts.as_deref());
if let Some(f) = builder_mod {
f(&mut builder);
}
let response = client.send_async(builder.build()).await
.map_err(|e| super::shared::ApiError::RequestSendFailed(e.to_string()))?;
let status: usize = response.get_status().into();
let headers = response.get_headers_ref().clone();
if status < 200 || status >= 300 {
let error_bytes = foundation_netio::shared::client::body_reader::collect_bytes_from_send_safe(response.take_body());
let body = (!error_bytes.is_empty())
.then(|| String::from_utf8_lossy(&error_bytes).into_owned());
return Err(super::shared::ApiError::HttpStatus { code: status as u16, headers, body });
}
let body_bytes = foundation_netio::shared::client::body_reader::collect_bytes_from_send_safe(response.take_body());
let parsed: ResourceSharingShareResponseCollection = serde_json::from_slice(&body_bytes).map_err(|e: serde_json::Error| super::shared::ApiError::ParseFailed(e.to_string()))?;
Ok(ApiResponse { status: status as u16, headers, body: parsed })
}
pub async fn share_create_request<F>(
client: DynNetClient,
args: &ShareCreateArgs,
base_url: &str,
builder_mod: Option<F>,
) -> Result<ApiResponse<ResourceSharingShareResponseSingle>, super::shared::ApiError>
where
F: FnOnce(&mut PreparedRequestBuilder),
{
let path = format!("/accounts/{}/shares",
args.account_id,
);
let endpoint_url = format!("{}{}", base_url, path);
let mut builder = PreparedRequestBuilder::post(&endpoint_url)
.map_err(|e| super::shared::ApiError::RequestBuildFailed(e.to_string()))?;
builder = builder.body_json(&args.body)
.map_err(|e| super::shared::ApiError::RequestBuildFailed(e.to_string()))?;
if let Some(f) = builder_mod {
f(&mut builder);
}
let response = client.send_async(builder.build()).await
.map_err(|e| super::shared::ApiError::RequestSendFailed(e.to_string()))?;
let status: usize = response.get_status().into();
let headers = response.get_headers_ref().clone();
if status < 200 || status >= 300 {
let error_bytes = foundation_netio::shared::client::body_reader::collect_bytes_from_send_safe(response.take_body());
let body = (!error_bytes.is_empty())
.then(|| String::from_utf8_lossy(&error_bytes).into_owned());
return Err(super::shared::ApiError::HttpStatus { code: status as u16, headers, body });
}
let body_bytes = foundation_netio::shared::client::body_reader::collect_bytes_from_send_safe(response.take_body());
let parsed: ResourceSharingShareResponseSingle = serde_json::from_slice(&body_bytes).map_err(|e: serde_json::Error| super::shared::ApiError::ParseFailed(e.to_string()))?;
Ok(ApiResponse { status: status as u16, headers, body: parsed })
}
pub async fn shares_get_by_id_request<F>(
client: DynNetClient,
args: &SharesGetByIdArgs,
base_url: &str,
builder_mod: Option<F>,
) -> Result<ApiResponse<ResourceSharingShareResponseSingle>, super::shared::ApiError>
where
F: FnOnce(&mut PreparedRequestBuilder),
{
let path = format!("/accounts/{}/shares/{}",
args.account_id,
args.share_id,
);
let endpoint_url = format!("{}{}", base_url, path);
let mut builder = PreparedRequestBuilder::get(&endpoint_url)
.map_err(|e| super::shared::ApiError::RequestBuildFailed(e.to_string()))?;
builder = builder.query("include_resources", args.include_resources.as_deref());
builder = builder.query("include_recipient_counts", args.include_recipient_counts.as_deref());
if let Some(f) = builder_mod {
f(&mut builder);
}
let response = client.send_async(builder.build()).await
.map_err(|e| super::shared::ApiError::RequestSendFailed(e.to_string()))?;
let status: usize = response.get_status().into();
let headers = response.get_headers_ref().clone();
if status < 200 || status >= 300 {
let error_bytes = foundation_netio::shared::client::body_reader::collect_bytes_from_send_safe(response.take_body());
let body = (!error_bytes.is_empty())
.then(|| String::from_utf8_lossy(&error_bytes).into_owned());
return Err(super::shared::ApiError::HttpStatus { code: status as u16, headers, body });
}
let body_bytes = foundation_netio::shared::client::body_reader::collect_bytes_from_send_safe(response.take_body());
let parsed: ResourceSharingShareResponseSingle = serde_json::from_slice(&body_bytes).map_err(|e: serde_json::Error| super::shared::ApiError::ParseFailed(e.to_string()))?;
Ok(ApiResponse { status: status as u16, headers, body: parsed })
}
pub async fn share_update_request<F>(
client: DynNetClient,
args: &ShareUpdateArgs,
base_url: &str,
builder_mod: Option<F>,
) -> Result<ApiResponse<ResourceSharingShareResponseSingle>, super::shared::ApiError>
where
F: FnOnce(&mut PreparedRequestBuilder),
{
let path = format!("/accounts/{}/shares/{}",
args.account_id,
args.share_id,
);
let endpoint_url = format!("{}{}", base_url, path);
let mut builder = PreparedRequestBuilder::put(&endpoint_url)
.map_err(|e| super::shared::ApiError::RequestBuildFailed(e.to_string()))?;
builder = builder.body_json(&args.body)
.map_err(|e| super::shared::ApiError::RequestBuildFailed(e.to_string()))?;
if let Some(f) = builder_mod {
f(&mut builder);
}
let response = client.send_async(builder.build()).await
.map_err(|e| super::shared::ApiError::RequestSendFailed(e.to_string()))?;
let status: usize = response.get_status().into();
let headers = response.get_headers_ref().clone();
if status < 200 || status >= 300 {
let error_bytes = foundation_netio::shared::client::body_reader::collect_bytes_from_send_safe(response.take_body());
let body = (!error_bytes.is_empty())
.then(|| String::from_utf8_lossy(&error_bytes).into_owned());
return Err(super::shared::ApiError::HttpStatus { code: status as u16, headers, body });
}
let body_bytes = foundation_netio::shared::client::body_reader::collect_bytes_from_send_safe(response.take_body());
let parsed: ResourceSharingShareResponseSingle = serde_json::from_slice(&body_bytes).map_err(|e: serde_json::Error| super::shared::ApiError::ParseFailed(e.to_string()))?;
Ok(ApiResponse { status: status as u16, headers, body: parsed })
}
pub async fn share_delete_request<F>(
client: DynNetClient,
args: &ShareDeleteArgs,
base_url: &str,
builder_mod: Option<F>,
) -> Result<ApiResponse<ResourceSharingShareResponseSingle>, super::shared::ApiError>
where
F: FnOnce(&mut PreparedRequestBuilder),
{
let path = format!("/accounts/{}/shares/{}",
args.account_id,
args.share_id,
);
let endpoint_url = format!("{}{}", base_url, path);
let mut builder = PreparedRequestBuilder::delete(&endpoint_url)
.map_err(|e| super::shared::ApiError::RequestBuildFailed(e.to_string()))?;
if let Some(f) = builder_mod {
f(&mut builder);
}
let response = client.send_async(builder.build()).await
.map_err(|e| super::shared::ApiError::RequestSendFailed(e.to_string()))?;
let status: usize = response.get_status().into();
let headers = response.get_headers_ref().clone();
if status < 200 || status >= 300 {
let error_bytes = foundation_netio::shared::client::body_reader::collect_bytes_from_send_safe(response.take_body());
let body = (!error_bytes.is_empty())
.then(|| String::from_utf8_lossy(&error_bytes).into_owned());
return Err(super::shared::ApiError::HttpStatus { code: status as u16, headers, body });
}
let body_bytes = foundation_netio::shared::client::body_reader::collect_bytes_from_send_safe(response.take_body());
let parsed: ResourceSharingShareResponseSingle = serde_json::from_slice(&body_bytes).map_err(|e: serde_json::Error| super::shared::ApiError::ParseFailed(e.to_string()))?;
Ok(ApiResponse { status: status as u16, headers, body: parsed })
}
pub async fn share_recipients_list_request<F>(
client: DynNetClient,
args: &ShareRecipientsListArgs,
base_url: &str,
builder_mod: Option<F>,
) -> Result<ApiResponse<ResourceSharingShareRecipientResponseCollection>, super::shared::ApiError>
where
F: FnOnce(&mut PreparedRequestBuilder),
{
let path = format!("/accounts/{}/shares/{}/recipients",
args.account_id,
args.share_id,
);
let endpoint_url = format!("{}{}", base_url, path);
let mut builder = PreparedRequestBuilder::get(&endpoint_url)
.map_err(|e| super::shared::ApiError::RequestBuildFailed(e.to_string()))?;
builder = builder.query("include_resources", args.include_resources.as_deref());
builder = builder.query("page", args.page.as_deref());
builder = builder.query("per_page", args.per_page.as_deref());
if let Some(f) = builder_mod {
f(&mut builder);
}
let response = client.send_async(builder.build()).await
.map_err(|e| super::shared::ApiError::RequestSendFailed(e.to_string()))?;
let status: usize = response.get_status().into();
let headers = response.get_headers_ref().clone();
if status < 200 || status >= 300 {
let error_bytes = foundation_netio::shared::client::body_reader::collect_bytes_from_send_safe(response.take_body());
let body = (!error_bytes.is_empty())
.then(|| String::from_utf8_lossy(&error_bytes).into_owned());
return Err(super::shared::ApiError::HttpStatus { code: status as u16, headers, body });
}
let body_bytes = foundation_netio::shared::client::body_reader::collect_bytes_from_send_safe(response.take_body());
let parsed: ResourceSharingShareRecipientResponseCollection = serde_json::from_slice(&body_bytes).map_err(|e: serde_json::Error| super::shared::ApiError::ParseFailed(e.to_string()))?;
Ok(ApiResponse { status: status as u16, headers, body: parsed })
}
pub async fn share_recipient_create_request<F>(
client: DynNetClient,
args: &ShareRecipientCreateArgs,
base_url: &str,
builder_mod: Option<F>,
) -> Result<ApiResponse<ResourceSharingShareRecipientResponseSingle>, super::shared::ApiError>
where
F: FnOnce(&mut PreparedRequestBuilder),
{
let path = format!("/accounts/{}/shares/{}/recipients",
args.account_id,
args.share_id,
);
let endpoint_url = format!("{}{}", base_url, path);
let mut builder = PreparedRequestBuilder::post(&endpoint_url)
.map_err(|e| super::shared::ApiError::RequestBuildFailed(e.to_string()))?;
builder = builder.body_json(&args.body)
.map_err(|e| super::shared::ApiError::RequestBuildFailed(e.to_string()))?;
if let Some(f) = builder_mod {
f(&mut builder);
}
let response = client.send_async(builder.build()).await
.map_err(|e| super::shared::ApiError::RequestSendFailed(e.to_string()))?;
let status: usize = response.get_status().into();
let headers = response.get_headers_ref().clone();
if status < 200 || status >= 300 {
let error_bytes = foundation_netio::shared::client::body_reader::collect_bytes_from_send_safe(response.take_body());
let body = (!error_bytes.is_empty())
.then(|| String::from_utf8_lossy(&error_bytes).into_owned());
return Err(super::shared::ApiError::HttpStatus { code: status as u16, headers, body });
}
let body_bytes = foundation_netio::shared::client::body_reader::collect_bytes_from_send_safe(response.take_body());
let parsed: ResourceSharingShareRecipientResponseSingle = serde_json::from_slice(&body_bytes).map_err(|e: serde_json::Error| super::shared::ApiError::ParseFailed(e.to_string()))?;
Ok(ApiResponse { status: status as u16, headers, body: parsed })
}
pub async fn share_recipients_update_request<F>(
client: DynNetClient,
args: &ShareRecipientsUpdateArgs,
base_url: &str,
builder_mod: Option<F>,
) -> Result<ApiResponse<()>, super::shared::ApiError>
where
F: FnOnce(&mut PreparedRequestBuilder),
{
let path = format!("/accounts/{}/shares/{}/recipients",
args.account_id,
args.share_id,
);
let endpoint_url = format!("{}{}", base_url, path);
let mut builder = PreparedRequestBuilder::put(&endpoint_url)
.map_err(|e| super::shared::ApiError::RequestBuildFailed(e.to_string()))?;
builder = builder.body_json(&args.body)
.map_err(|e| super::shared::ApiError::RequestBuildFailed(e.to_string()))?;
if let Some(f) = builder_mod {
f(&mut builder);
}
let response = client.send_async(builder.build()).await
.map_err(|e| super::shared::ApiError::RequestSendFailed(e.to_string()))?;
let status: usize = response.get_status().into();
let headers = response.get_headers_ref().clone();
if status < 200 || status >= 300 {
let error_bytes = foundation_netio::shared::client::body_reader::collect_bytes_from_send_safe(response.take_body());
let body = (!error_bytes.is_empty())
.then(|| String::from_utf8_lossy(&error_bytes).into_owned());
return Err(super::shared::ApiError::HttpStatus { code: status as u16, headers, body });
}
Ok(ApiResponse { status: status as u16, headers, body: () })
}
pub async fn share_recipients_get_by_id_request<F>(
client: DynNetClient,
args: &ShareRecipientsGetByIdArgs,
base_url: &str,
builder_mod: Option<F>,
) -> Result<ApiResponse<ResourceSharingShareRecipientResponseSingle>, super::shared::ApiError>
where
F: FnOnce(&mut PreparedRequestBuilder),
{
let path = format!("/accounts/{}/shares/{}/recipients/{}",
args.account_id,
args.share_id,
args.recipient_id,
);
let endpoint_url = format!("{}{}", base_url, path);
let mut builder = PreparedRequestBuilder::get(&endpoint_url)
.map_err(|e| super::shared::ApiError::RequestBuildFailed(e.to_string()))?;
builder = builder.query("include_resources", args.include_resources.as_deref());
if let Some(f) = builder_mod {
f(&mut builder);
}
let response = client.send_async(builder.build()).await
.map_err(|e| super::shared::ApiError::RequestSendFailed(e.to_string()))?;
let status: usize = response.get_status().into();
let headers = response.get_headers_ref().clone();
if status < 200 || status >= 300 {
let error_bytes = foundation_netio::shared::client::body_reader::collect_bytes_from_send_safe(response.take_body());
let body = (!error_bytes.is_empty())
.then(|| String::from_utf8_lossy(&error_bytes).into_owned());
return Err(super::shared::ApiError::HttpStatus { code: status as u16, headers, body });
}
let body_bytes = foundation_netio::shared::client::body_reader::collect_bytes_from_send_safe(response.take_body());
let parsed: ResourceSharingShareRecipientResponseSingle = serde_json::from_slice(&body_bytes).map_err(|e: serde_json::Error| super::shared::ApiError::ParseFailed(e.to_string()))?;
Ok(ApiResponse { status: status as u16, headers, body: parsed })
}
pub async fn share_recipient_delete_request<F>(
client: DynNetClient,
args: &ShareRecipientDeleteArgs,
base_url: &str,
builder_mod: Option<F>,
) -> Result<ApiResponse<ResourceSharingShareRecipientResponseSingle>, super::shared::ApiError>
where
F: FnOnce(&mut PreparedRequestBuilder),
{
let path = format!("/accounts/{}/shares/{}/recipients/{}",
args.account_id,
args.share_id,
args.recipient_id,
);
let endpoint_url = format!("{}{}", base_url, path);
let mut builder = PreparedRequestBuilder::delete(&endpoint_url)
.map_err(|e| super::shared::ApiError::RequestBuildFailed(e.to_string()))?;
if let Some(f) = builder_mod {
f(&mut builder);
}
let response = client.send_async(builder.build()).await
.map_err(|e| super::shared::ApiError::RequestSendFailed(e.to_string()))?;
let status: usize = response.get_status().into();
let headers = response.get_headers_ref().clone();
if status < 200 || status >= 300 {
let error_bytes = foundation_netio::shared::client::body_reader::collect_bytes_from_send_safe(response.take_body());
let body = (!error_bytes.is_empty())
.then(|| String::from_utf8_lossy(&error_bytes).into_owned());
return Err(super::shared::ApiError::HttpStatus { code: status as u16, headers, body });
}
let body_bytes = foundation_netio::shared::client::body_reader::collect_bytes_from_send_safe(response.take_body());
let parsed: ResourceSharingShareRecipientResponseSingle = serde_json::from_slice(&body_bytes).map_err(|e: serde_json::Error| super::shared::ApiError::ParseFailed(e.to_string()))?;
Ok(ApiResponse { status: status as u16, headers, body: parsed })
}
pub async fn share_resources_list_request<F>(
client: DynNetClient,
args: &ShareResourcesListArgs,
base_url: &str,
builder_mod: Option<F>,
) -> Result<ApiResponse<ResourceSharingShareResourceResponseCollection>, super::shared::ApiError>
where
F: FnOnce(&mut PreparedRequestBuilder),
{
let path = format!("/accounts/{}/shares/{}/resources",
args.account_id,
args.share_id,
);
let endpoint_url = format!("{}{}", base_url, path);
let mut builder = PreparedRequestBuilder::get(&endpoint_url)
.map_err(|e| super::shared::ApiError::RequestBuildFailed(e.to_string()))?;
builder = builder.query("status", args.status.as_deref());
builder = builder.query("resource_type", args.resource_type.as_deref());
builder = builder.query("page", args.page.as_deref());
builder = builder.query("per_page", args.per_page.as_deref());
if let Some(f) = builder_mod {
f(&mut builder);
}
let response = client.send_async(builder.build()).await
.map_err(|e| super::shared::ApiError::RequestSendFailed(e.to_string()))?;
let status: usize = response.get_status().into();
let headers = response.get_headers_ref().clone();
if status < 200 || status >= 300 {
let error_bytes = foundation_netio::shared::client::body_reader::collect_bytes_from_send_safe(response.take_body());
let body = (!error_bytes.is_empty())
.then(|| String::from_utf8_lossy(&error_bytes).into_owned());
return Err(super::shared::ApiError::HttpStatus { code: status as u16, headers, body });
}
let body_bytes = foundation_netio::shared::client::body_reader::collect_bytes_from_send_safe(response.take_body());
let parsed: ResourceSharingShareResourceResponseCollection = serde_json::from_slice(&body_bytes).map_err(|e: serde_json::Error| super::shared::ApiError::ParseFailed(e.to_string()))?;
Ok(ApiResponse { status: status as u16, headers, body: parsed })
}
pub async fn share_resource_create_request<F>(
client: DynNetClient,
args: &ShareResourceCreateArgs,
base_url: &str,
builder_mod: Option<F>,
) -> Result<ApiResponse<ResourceSharingShareResourceResponseSingle>, super::shared::ApiError>
where
F: FnOnce(&mut PreparedRequestBuilder),
{
let path = format!("/accounts/{}/shares/{}/resources",
args.account_id,
args.share_id,
);
let endpoint_url = format!("{}{}", base_url, path);
let mut builder = PreparedRequestBuilder::post(&endpoint_url)
.map_err(|e| super::shared::ApiError::RequestBuildFailed(e.to_string()))?;
builder = builder.body_json(&args.body)
.map_err(|e| super::shared::ApiError::RequestBuildFailed(e.to_string()))?;
if let Some(f) = builder_mod {
f(&mut builder);
}
let response = client.send_async(builder.build()).await
.map_err(|e| super::shared::ApiError::RequestSendFailed(e.to_string()))?;
let status: usize = response.get_status().into();
let headers = response.get_headers_ref().clone();
if status < 200 || status >= 300 {
let error_bytes = foundation_netio::shared::client::body_reader::collect_bytes_from_send_safe(response.take_body());
let body = (!error_bytes.is_empty())
.then(|| String::from_utf8_lossy(&error_bytes).into_owned());
return Err(super::shared::ApiError::HttpStatus { code: status as u16, headers, body });
}
let body_bytes = foundation_netio::shared::client::body_reader::collect_bytes_from_send_safe(response.take_body());
let parsed: ResourceSharingShareResourceResponseSingle = serde_json::from_slice(&body_bytes).map_err(|e: serde_json::Error| super::shared::ApiError::ParseFailed(e.to_string()))?;
Ok(ApiResponse { status: status as u16, headers, body: parsed })
}
pub async fn share_resources_get_by_id_request<F>(
client: DynNetClient,
args: &ShareResourcesGetByIdArgs,
base_url: &str,
builder_mod: Option<F>,
) -> Result<ApiResponse<ResourceSharingShareResourceResponseSingle>, super::shared::ApiError>
where
F: FnOnce(&mut PreparedRequestBuilder),
{
let path = format!("/accounts/{}/shares/{}/resources/{}",
args.account_id,
args.share_id,
args.resource_id,
);
let endpoint_url = format!("{}{}", base_url, path);
let mut builder = PreparedRequestBuilder::get(&endpoint_url)
.map_err(|e| super::shared::ApiError::RequestBuildFailed(e.to_string()))?;
if let Some(f) = builder_mod {
f(&mut builder);
}
let response = client.send_async(builder.build()).await
.map_err(|e| super::shared::ApiError::RequestSendFailed(e.to_string()))?;
let status: usize = response.get_status().into();
let headers = response.get_headers_ref().clone();
if status < 200 || status >= 300 {
let error_bytes = foundation_netio::shared::client::body_reader::collect_bytes_from_send_safe(response.take_body());
let body = (!error_bytes.is_empty())
.then(|| String::from_utf8_lossy(&error_bytes).into_owned());
return Err(super::shared::ApiError::HttpStatus { code: status as u16, headers, body });
}
let body_bytes = foundation_netio::shared::client::body_reader::collect_bytes_from_send_safe(response.take_body());
let parsed: ResourceSharingShareResourceResponseSingle = serde_json::from_slice(&body_bytes).map_err(|e: serde_json::Error| super::shared::ApiError::ParseFailed(e.to_string()))?;
Ok(ApiResponse { status: status as u16, headers, body: parsed })
}
pub async fn share_resource_update_request<F>(
client: DynNetClient,
args: &ShareResourceUpdateArgs,
base_url: &str,
builder_mod: Option<F>,
) -> Result<ApiResponse<ResourceSharingShareResourceResponseSingle>, super::shared::ApiError>
where
F: FnOnce(&mut PreparedRequestBuilder),
{
let path = format!("/accounts/{}/shares/{}/resources/{}",
args.account_id,
args.share_id,
args.resource_id,
);
let endpoint_url = format!("{}{}", base_url, path);
let mut builder = PreparedRequestBuilder::put(&endpoint_url)
.map_err(|e| super::shared::ApiError::RequestBuildFailed(e.to_string()))?;
builder = builder.body_json(&args.body)
.map_err(|e| super::shared::ApiError::RequestBuildFailed(e.to_string()))?;
if let Some(f) = builder_mod {
f(&mut builder);
}
let response = client.send_async(builder.build()).await
.map_err(|e| super::shared::ApiError::RequestSendFailed(e.to_string()))?;
let status: usize = response.get_status().into();
let headers = response.get_headers_ref().clone();
if status < 200 || status >= 300 {
let error_bytes = foundation_netio::shared::client::body_reader::collect_bytes_from_send_safe(response.take_body());
let body = (!error_bytes.is_empty())
.then(|| String::from_utf8_lossy(&error_bytes).into_owned());
return Err(super::shared::ApiError::HttpStatus { code: status as u16, headers, body });
}
let body_bytes = foundation_netio::shared::client::body_reader::collect_bytes_from_send_safe(response.take_body());
let parsed: ResourceSharingShareResourceResponseSingle = serde_json::from_slice(&body_bytes).map_err(|e: serde_json::Error| super::shared::ApiError::ParseFailed(e.to_string()))?;
Ok(ApiResponse { status: status as u16, headers, body: parsed })
}
pub async fn share_resource_delete_request<F>(
client: DynNetClient,
args: &ShareResourceDeleteArgs,
base_url: &str,
builder_mod: Option<F>,
) -> Result<ApiResponse<ResourceSharingShareResourceResponseSingle>, super::shared::ApiError>
where
F: FnOnce(&mut PreparedRequestBuilder),
{
let path = format!("/accounts/{}/shares/{}/resources/{}",
args.account_id,
args.share_id,
args.resource_id,
);
let endpoint_url = format!("{}{}", base_url, path);
let mut builder = PreparedRequestBuilder::delete(&endpoint_url)
.map_err(|e| super::shared::ApiError::RequestBuildFailed(e.to_string()))?;
if let Some(f) = builder_mod {
f(&mut builder);
}
let response = client.send_async(builder.build()).await
.map_err(|e| super::shared::ApiError::RequestSendFailed(e.to_string()))?;
let status: usize = response.get_status().into();
let headers = response.get_headers_ref().clone();
if status < 200 || status >= 300 {
let error_bytes = foundation_netio::shared::client::body_reader::collect_bytes_from_send_safe(response.take_body());
let body = (!error_bytes.is_empty())
.then(|| String::from_utf8_lossy(&error_bytes).into_owned());
return Err(super::shared::ApiError::HttpStatus { code: status as u16, headers, body });
}
let body_bytes = foundation_netio::shared::client::body_reader::collect_bytes_from_send_safe(response.take_body());
let parsed: ResourceSharingShareResourceResponseSingle = serde_json::from_slice(&body_bytes).map_err(|e: serde_json::Error| super::shared::ApiError::ParseFailed(e.to_string()))?;
Ok(ApiResponse { status: status as u16, headers, body: parsed })
}