dsh_api 0.10.0

DSH resource management API client
Documentation
#[allow(unused_imports)]
#[path = "common.rs"]
mod common;

use crate::common::initialize_logger;
use dsh_api::manifest::Manifest;
use dsh_api::version::Version;
use std::str::FromStr;

#[tokio::main]
async fn main() -> Result<(), String> {
  use dsh_api::dsh_api_client_factory::DshApiClientFactory;

  initialize_logger();

  let manifest_id = "kpn/eavesdropper";
  let manifest_version = Version::from_str("0.9.2")?;

  let client_factory = DshApiClientFactory::default();
  let client = client_factory.client().await?;

  println!("\n-------------------------------------------");
  println!("manifest_ids");
  println!("-------------------------------------------");
  let manifest_ids: Vec<String> = client.manifest_ids().await?;
  for manifest_id in manifest_ids {
    println!("{}", manifest_id);
  }

  println!("\n-------------------------------------------");
  println!("manifest_ids_with_versions");
  println!("-------------------------------------------");
  let manifest_ids_with_versions: Vec<(String, Vec<Manifest>)> = client.manifests_all_versions().await?;
  for (manifest_id, manifest_versions) in manifest_ids_with_versions {
    println!("{}", manifest_id);
    for manifest_version in manifest_versions {
      println!("  {}", manifest_version.version);
    }
  }

  println!("-------------------------------------------");
  println!("manifests");
  println!("-------------------------------------------");
  let manifests: Vec<Manifest> = client.manifests().await?;
  for manifest in manifests {
    println!("-------------------------------------------");
    println!("{} -> {}", manifest.name, manifest.version);
  }

  println!("-------------------------------------------");
  println!("app_catalog_manifests");
  println!("-------------------------------------------");
  let manifest_latest_version: Manifest = client.manifest_latest_version(manifest_id, true).await?;
  println!("{}", manifest_latest_version);

  println!("-------------------------------------------");
  println!("app_catalog_manifest");
  println!("-------------------------------------------");
  let manifest = client.manifest(manifest_id, &manifest_version).await?;
  println!(
    "{}:{} -> {} : {}",
    manifest.id,
    manifest.version,
    manifest.name,
    manifest.description.unwrap_or_default()
  );

  println!("-------------------------------------------");
  println!("raw_manifest");
  println!("-------------------------------------------");
  let (manifest, draft) = client.manifest_raw(manifest_id, &manifest_version).await?;
  println!("{}", draft);
  println!("{}", manifest);

  Ok(())
}