use std::sync::Arc;
use crate::core::client::{VimClient, Result};
#[derive(Clone)]
pub struct HttpNfcLease {
client: Arc<dyn VimClient>,
mo_id: String,
}
impl HttpNfcLease {
pub fn new(client: Arc<dyn VimClient>, mo_id: &str) -> Self {
Self {
client,
mo_id: mo_id.to_string(),
}
}
pub async fn http_nfc_lease_abort(&self, fault: Option<&crate::types::structs::MethodFault>) -> Result<()> {
let input = HttpNfcLeaseAbortRequestType {fault, };
self.client.invoke_void("", "HttpNfcLease", &self.mo_id, "HttpNfcLeaseAbort", Some(&input)).await
}
pub async fn http_nfc_lease_complete(&self) -> Result<()> {
self.client.invoke_void("", "HttpNfcLease", &self.mo_id, "HttpNfcLeaseComplete", None).await
}
pub async fn http_nfc_lease_get_manifest(&self) -> Result<Option<Vec<crate::types::structs::HttpNfcLeaseManifestEntry>>> {
let bytes_opt = self.client.invoke_optional("", "HttpNfcLease", &self.mo_id, "HttpNfcLeaseGetManifest", None).await?;
match bytes_opt {
Some(ref b) => Ok(Some(crate::core::client::unmarshal_array(self.client.transport(), b)?)),
None => Ok(None),
}
}
pub async fn http_nfc_lease_probe_urls(&self, files: Option<&[crate::types::structs::HttpNfcLeaseSourceFile]>, timeout: Option<i32>) -> Result<Option<Vec<crate::types::structs::HttpNfcLeaseProbeResult>>> {
let input = HttpNfcLeaseProbeUrlsRequestType {files, timeout, };
let bytes_opt = self.client.invoke_optional("", "HttpNfcLease", &self.mo_id, "HttpNfcLeaseProbeUrls", Some(&input)).await?;
match bytes_opt {
Some(ref b) => Ok(Some(crate::core::client::unmarshal_array(self.client.transport(), b)?)),
None => Ok(None),
}
}
pub async fn http_nfc_lease_progress(&self, percent: i32) -> Result<()> {
let input = HttpNfcLeaseProgressRequestType {percent, };
self.client.invoke_void("", "HttpNfcLease", &self.mo_id, "HttpNfcLeaseProgress", Some(&input)).await
}
pub async fn http_nfc_lease_pull_from_urls_task(&self, files: Option<&[crate::types::structs::HttpNfcLeaseSourceFile]>) -> Result<crate::types::structs::ManagedObjectReference> {
let input = HttpNfcLeasePullFromUrlsRequestType {files, };
let bytes = self.client.invoke("", "HttpNfcLease", &self.mo_id, "HttpNfcLeasePullFromUrls_Task", Some(&input)).await?;
let result: crate::types::structs::ManagedObjectReference = crate::core::client::unmarshal(self.client.transport(), &bytes)?;
Ok(result)
}
pub async fn http_nfc_lease_set_manifest_checksum_type(&self, device_urls_to_checksum_types: Option<&[crate::types::structs::KeyValue]>) -> Result<()> {
let input = HttpNfcLeaseSetManifestChecksumTypeRequestType {device_urls_to_checksum_types, };
self.client.invoke_void("", "HttpNfcLease", &self.mo_id, "HttpNfcLeaseSetManifestChecksumType", Some(&input)).await
}
pub async fn capabilities(&self) -> Result<crate::types::structs::HttpNfcLeaseCapabilities> {
let pv_opt = self.client.fetch_property_raw("", "HttpNfcLease", &self.mo_id, "capabilities").await?;
let pv = pv_opt.ok_or_else(|| crate::core::client::VimError::ParseError("property capabilities was empty".to_string()))?;
let result: crate::types::structs::HttpNfcLeaseCapabilities = crate::core::client::extract_property(pv)?;
Ok(result)
}
pub async fn error(&self) -> Result<Option<crate::types::structs::MethodFault>> {
let pv_opt = self.client.fetch_property_raw("", "HttpNfcLease", &self.mo_id, "error").await?;
match pv_opt {
Some(pv) => Ok(Some(crate::core::client::extract_property(pv)?)),
None => Ok(None),
}
}
pub async fn info(&self) -> Result<Option<crate::types::structs::HttpNfcLeaseInfo>> {
let pv_opt = self.client.fetch_property_raw("", "HttpNfcLease", &self.mo_id, "info").await?;
match pv_opt {
Some(pv) => Ok(Some(crate::core::client::extract_property(pv)?)),
None => Ok(None),
}
}
pub async fn initialize_progress(&self) -> Result<i32> {
let pv_opt = self.client.fetch_property_raw("", "HttpNfcLease", &self.mo_id, "initializeProgress").await?;
let pv = pv_opt.ok_or_else(|| crate::core::client::VimError::ParseError("property initializeProgress was empty".to_string()))?;
let result: i32 = crate::core::client::extract_property(pv)?;
Ok(result)
}
pub async fn mode(&self) -> Result<String> {
let pv_opt = self.client.fetch_property_raw("", "HttpNfcLease", &self.mo_id, "mode").await?;
let pv = pv_opt.ok_or_else(|| crate::core::client::VimError::ParseError("property mode was empty".to_string()))?;
let result: String = crate::core::client::extract_property(pv)?;
Ok(result)
}
pub async fn state(&self) -> Result<crate::types::enums::HttpNfcLeaseStateEnum> {
let pv_opt = self.client.fetch_property_raw("", "HttpNfcLease", &self.mo_id, "state").await?;
let pv = pv_opt.ok_or_else(|| crate::core::client::VimError::ParseError("property state was empty".to_string()))?;
let result: crate::types::enums::HttpNfcLeaseStateEnum = crate::core::client::extract_property(pv)?;
Ok(result)
}
pub async fn transfer_progress(&self) -> Result<i32> {
let pv_opt = self.client.fetch_property_raw("", "HttpNfcLease", &self.mo_id, "transferProgress").await?;
let pv = pv_opt.ok_or_else(|| crate::core::client::VimError::ParseError("property transferProgress was empty".to_string()))?;
let result: i32 = crate::core::client::extract_property(pv)?;
Ok(result)
}
}
struct HttpNfcLeaseAbortRequestType<'a> {
fault: Option<&'a crate::types::structs::MethodFault>,
}
impl<'a> miniserde::Serialize for HttpNfcLeaseAbortRequestType<'a> {
fn begin(&self) -> miniserde::ser::Fragment<'_> {
miniserde::ser::Fragment::Map(Box::new(HttpNfcLeaseAbortRequestTypeSer { data: self, seq: 0 }))
}
}
struct HttpNfcLeaseAbortRequestTypeSer<'b, 'a> {
data: &'b HttpNfcLeaseAbortRequestType<'a>,
seq: usize,
}
impl<'b, 'a> miniserde::ser::Map for HttpNfcLeaseAbortRequestTypeSer<'b, 'a> {
fn next(&mut self) -> Option<(std::borrow::Cow<'_, str>, &dyn miniserde::Serialize)> {
loop {
let seq = self.seq;
self.seq += 1;
match seq {
0 => return Some((std::borrow::Cow::Borrowed("_typeName"), &"HttpNfcLeaseAbortRequestType")),
1 => {
let Some(ref val) = self.data.fault else { continue; };
return Some((std::borrow::Cow::Borrowed("fault"), val as &dyn miniserde::Serialize));
}
_ => return None,
}
}
}
}
struct HttpNfcLeaseProbeUrlsRequestType<'a> {
files: Option<&'a [crate::types::structs::HttpNfcLeaseSourceFile]>,
timeout: Option<i32>,
}
impl<'a> miniserde::Serialize for HttpNfcLeaseProbeUrlsRequestType<'a> {
fn begin(&self) -> miniserde::ser::Fragment<'_> {
miniserde::ser::Fragment::Map(Box::new(HttpNfcLeaseProbeUrlsRequestTypeSer { data: self, seq: 0 }))
}
}
struct HttpNfcLeaseProbeUrlsRequestTypeSer<'b, 'a> {
data: &'b HttpNfcLeaseProbeUrlsRequestType<'a>,
seq: usize,
}
impl<'b, 'a> miniserde::ser::Map for HttpNfcLeaseProbeUrlsRequestTypeSer<'b, 'a> {
fn next(&mut self) -> Option<(std::borrow::Cow<'_, str>, &dyn miniserde::Serialize)> {
loop {
let seq = self.seq;
self.seq += 1;
match seq {
0 => return Some((std::borrow::Cow::Borrowed("_typeName"), &"HttpNfcLeaseProbeUrlsRequestType")),
1 => {
let Some(ref val) = self.data.files else { continue; };
return Some((std::borrow::Cow::Borrowed("files"), val as &dyn miniserde::Serialize));
}
2 => {
let Some(ref val) = self.data.timeout else { continue; };
return Some((std::borrow::Cow::Borrowed("timeout"), val as &dyn miniserde::Serialize));
}
_ => return None,
}
}
}
}
struct HttpNfcLeaseProgressRequestType {
percent: i32,
}
impl miniserde::Serialize for HttpNfcLeaseProgressRequestType {
fn begin(&self) -> miniserde::ser::Fragment<'_> {
miniserde::ser::Fragment::Map(Box::new(HttpNfcLeaseProgressRequestTypeSer { data: self, seq: 0 }))
}
}
struct HttpNfcLeaseProgressRequestTypeSer<'b> {
data: &'b HttpNfcLeaseProgressRequestType,
seq: usize,
}
impl<'b> miniserde::ser::Map for HttpNfcLeaseProgressRequestTypeSer<'b> {
fn next(&mut self) -> Option<(std::borrow::Cow<'_, str>, &dyn miniserde::Serialize)> {
let seq = self.seq;
self.seq += 1;
match seq {
0 => return Some((std::borrow::Cow::Borrowed("_typeName"), &"HttpNfcLeaseProgressRequestType")),
1 => return Some((std::borrow::Cow::Borrowed("percent"), &self.data.percent as &dyn miniserde::Serialize)),
_ => return None,
}
}
}
struct HttpNfcLeasePullFromUrlsRequestType<'a> {
files: Option<&'a [crate::types::structs::HttpNfcLeaseSourceFile]>,
}
impl<'a> miniserde::Serialize for HttpNfcLeasePullFromUrlsRequestType<'a> {
fn begin(&self) -> miniserde::ser::Fragment<'_> {
miniserde::ser::Fragment::Map(Box::new(HttpNfcLeasePullFromUrlsRequestTypeSer { data: self, seq: 0 }))
}
}
struct HttpNfcLeasePullFromUrlsRequestTypeSer<'b, 'a> {
data: &'b HttpNfcLeasePullFromUrlsRequestType<'a>,
seq: usize,
}
impl<'b, 'a> miniserde::ser::Map for HttpNfcLeasePullFromUrlsRequestTypeSer<'b, 'a> {
fn next(&mut self) -> Option<(std::borrow::Cow<'_, str>, &dyn miniserde::Serialize)> {
loop {
let seq = self.seq;
self.seq += 1;
match seq {
0 => return Some((std::borrow::Cow::Borrowed("_typeName"), &"HttpNfcLeasePullFromUrlsRequestType")),
1 => {
let Some(ref val) = self.data.files else { continue; };
return Some((std::borrow::Cow::Borrowed("files"), val as &dyn miniserde::Serialize));
}
_ => return None,
}
}
}
}
struct HttpNfcLeaseSetManifestChecksumTypeRequestType<'a> {
device_urls_to_checksum_types: Option<&'a [crate::types::structs::KeyValue]>,
}
impl<'a> miniserde::Serialize for HttpNfcLeaseSetManifestChecksumTypeRequestType<'a> {
fn begin(&self) -> miniserde::ser::Fragment<'_> {
miniserde::ser::Fragment::Map(Box::new(HttpNfcLeaseSetManifestChecksumTypeRequestTypeSer { data: self, seq: 0 }))
}
}
struct HttpNfcLeaseSetManifestChecksumTypeRequestTypeSer<'b, 'a> {
data: &'b HttpNfcLeaseSetManifestChecksumTypeRequestType<'a>,
seq: usize,
}
impl<'b, 'a> miniserde::ser::Map for HttpNfcLeaseSetManifestChecksumTypeRequestTypeSer<'b, 'a> {
fn next(&mut self) -> Option<(std::borrow::Cow<'_, str>, &dyn miniserde::Serialize)> {
loop {
let seq = self.seq;
self.seq += 1;
match seq {
0 => return Some((std::borrow::Cow::Borrowed("_typeName"), &"HttpNfcLeaseSetManifestChecksumTypeRequestType")),
1 => {
let Some(ref val) = self.data.device_urls_to_checksum_types else { continue; };
return Some((std::borrow::Cow::Borrowed("deviceUrlsToChecksumTypes"), val as &dyn miniserde::Serialize));
}
_ => return None,
}
}
}
}