oxide_cli/templates/
publish.rs1use 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}