use anyhow::Result;
use qiniu_credential::Credential;
use qiniu_upload_token::UploadPolicy;
use std::time::Duration;
use structopt::StructOpt;
#[derive(Debug, StructOpt)]
#[structopt(name = "generate-upload-token")]
struct Opt {
#[structopt(short, long)]
access_key: String,
#[structopt(short, long)]
secret_key: String,
#[structopt(short, long)]
bucket_name: String,
#[structopt(short, long, default_value = "86400")]
lifetime: u64,
}
fn main() -> Result<()> {
let opt: Opt = Opt::from_args();
let upload_token = UploadPolicy::new_for_bucket(&opt.bucket_name, Duration::from_secs(opt.lifetime))
.build_token(Credential::new(opt.access_key, opt.secret_key), Default::default());
println!("{upload_token}");
Ok(())
}