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