Skip to main content

oxide_cli/templates/
publish.rs

1use anyhow::Result;
2use serde::{Deserialize, Serialize};
3
4use crate::{AppContext, auth::token::get_auth_user};
5
6#[derive(Deserialize, Serialize)]
7pub struct PublishTemplateDto {
8  pub url: String,
9}
10
11#[derive(Deserialize)]
12struct PublishTemplateResponse {
13  message: String,
14  name: String,
15}
16
17pub async fn publish(ctx: &AppContext, template_url: &str) -> Result<()> {
18  let user = get_auth_user(&ctx.paths.auth)?;
19
20  let res: PublishTemplateResponse = ctx
21    .client
22    .post(format!("{}/template/publish", ctx.backend_url))
23    .bearer_auth(user.token)
24    .header("Content-Type", "application/json")
25    .json(&PublishTemplateDto {
26      url: template_url.to_string(),
27    })
28    .send()
29    .await?
30    .error_for_status()?
31    .json()
32    .await?;
33
34  println!("✅ {}", res.message);
35  println!("   Template: {}", res.name);
36  Ok(())
37}