use crate::utils::validate_inputs;
use clap::{Parser, Subcommand};
#[derive(Debug, Parser)]
#[command(version, about = "A HTTP API key-Based Authorization Server", long_about = None)]
pub struct Cli {
#[command(subcommand)]
pub command: Commands,
}
#[derive(Debug, Subcommand)]
pub enum Commands {
Serve {
#[arg(long, default_value = "", env = "AKAS_ADMIN_KEY")]
admin_key: String,
#[arg(long, conflicts_with = "admin_key")]
no_admin_key: bool,
#[arg(long, default_value = "false", env = "AKAS_LOCAL")]
local: bool,
#[arg(long, default_value = "false", env = "AKAS_ENABLE_METRICS")]
enable_metrics: bool,
#[arg(short, long, default_value_t = 5001, env = "AKAS_PORT")]
port: u16,
#[arg(long, default_value = "info", env = "AKAS_LOG_LEVEL")]
log_level: String,
#[arg(long, default_value_t = 100, env = "AKAS_ORIGINAL_LENGTH")]
original_length: u16,
#[arg(long, default_value_t = 0, env = "AKAS_METADATA_LENGTH")]
metadata_length: u16,
#[arg(long, default_value_t = 0, env = "AKAS_KEY_LENGTH")]
key_length: u16,
#[arg(long, default_value = "", env = "AKAS_KEY_PREFIX")]
key_prefix: String,
},
Load {
#[arg(long, default_value = "http://localhost:5001", env = "AKAS_HOST")]
host: String,
file: String,
#[arg(long, default_value = "sha256", env = "AKAS_FORMAT")]
format: String,
},
}
pub fn load_client(host: &str, filename: &str, format: &str) -> Result<String, std::io::Error> {
validate_inputs(host, filename, format)?;
let msg = format!(
"Request {}/load to load {} in format {}",
host, filename, format
);
Ok(msg)
}