wrangler 1.21.0

Command-line interface for all things Cloudflare Workers
Documentation
use anyhow::Result;

use crate::http;
use crate::settings::global_user::GlobalUser;
use crate::settings::toml::Manifest;
use crate::terminal::message::{Message, StdOut};

use cloudflare::endpoints::r2::{CreateBucket, DeleteBucket, ListBuckets};
use cloudflare::framework::apiclient::ApiClient;

pub fn list(manifest: &Manifest, env: Option<&str>, user: &GlobalUser) -> Result<()> {
    let account_id = manifest.get_account_id(env)?;
    let client = http::cf_v4_client(user)?;
    let result = client.request(&ListBuckets {
        account_identifier: &account_id,
    });

    match result {
        Ok(response) => {
            let buckets: Vec<String> = response
                .result
                .buckets
                .into_iter()
                .map(|b| b.name)
                .collect();
            println!("{:?}", buckets);
        }
        Err(e) => println!("{}", e),
    }

    Ok(())
}

pub fn create(manifest: &Manifest, env: Option<&str>, user: &GlobalUser, name: &str) -> Result<()> {
    let account_id = manifest.get_account_id(env)?;
    let msg = format!("Creating bucket \"{}\"", name);
    StdOut::working(&msg);

    let client = http::cf_v4_client(user)?;
    let result = client.request(&CreateBucket {
        account_identifier: &account_id,
        bucket_name: name,
    });

    match result {
        Ok(_) => {
            StdOut::success("Success!");
        }
        Err(e) => print!("{}", e),
    }

    Ok(())
}

pub fn delete(manifest: &Manifest, env: Option<&str>, user: &GlobalUser, name: &str) -> Result<()> {
    let account_id = manifest.get_account_id(env)?;
    let msg = format!("Deleting bucket \"{}\"", name);
    StdOut::working(&msg);

    let client = http::cf_v4_client(user)?;
    let result = client.request(&DeleteBucket {
        account_identifier: &account_id,
        bucket_name: name,
    });

    match result {
        Ok(_) => {
            StdOut::success("Success!");
        }
        Err(e) => print!("{}", e),
    }

    Ok(())
}