mirror of
https://github.com/deuxfleurs-org/garage.git
synced 2026-08-06 12:57:41 +00:00
CLI: garage json-api: allow payload to be omitted more often
This commit is contained in:
@@ -110,16 +110,29 @@ impl Cli {
|
||||
Ok(resp.success.into_iter().next().unwrap().1)
|
||||
}
|
||||
|
||||
pub async fn cmd_json_api(&self, endpoint: String, payload: String) -> Result<(), Error> {
|
||||
let payload: serde_json::Value = if payload == "-" {
|
||||
serde_json::from_reader(&std::io::stdin())?
|
||||
} else {
|
||||
serde_json::from_str(&payload)?
|
||||
};
|
||||
pub async fn cmd_json_api(
|
||||
&self,
|
||||
endpoint: String,
|
||||
payload: Option<String>,
|
||||
) -> Result<(), Error> {
|
||||
let request: AdminApiRequest = if let Some(payload) = payload {
|
||||
let payload: serde_json::Value = if payload == "-" {
|
||||
serde_json::from_reader(&std::io::stdin())?
|
||||
} else {
|
||||
serde_json::from_str(&payload)?
|
||||
};
|
||||
|
||||
let request: AdminApiRequest = serde_json::from_value(serde_json::json!({
|
||||
endpoint.clone(): payload,
|
||||
}))?;
|
||||
serde_json::from_value(serde_json::json!({
|
||||
endpoint.clone(): payload,
|
||||
}))?
|
||||
} else {
|
||||
serde_json::from_value(serde_json::json!({
|
||||
endpoint.clone(): null,
|
||||
}))
|
||||
.or(serde_json::from_value(serde_json::json!({
|
||||
endpoint.clone(): {},
|
||||
})))?
|
||||
};
|
||||
|
||||
let resp = match self
|
||||
.proxy_rpc_endpoint
|
||||
|
||||
@@ -78,8 +78,7 @@ pub enum Command {
|
||||
/// The admin API endpoint to invoke, e.g. `GetClusterStatus`
|
||||
endpoint: String,
|
||||
/// The JSON payload, or `-` to read from `stdin`
|
||||
#[structopt(default_value = "null")]
|
||||
payload: String,
|
||||
payload: Option<String>,
|
||||
},
|
||||
|
||||
/// Generate completions for a shell
|
||||
|
||||
Reference in New Issue
Block a user