Skip to main content

dsc/api/
plugins.rs

1use anyhow::{Context, Result};
2use serde_json::Value;
3
4use super::client::DiscourseClient;
5use super::error::http_error;
6
7impl DiscourseClient {
8    /// List installed plugins on the Discourse instance.
9    pub fn list_plugins(&self) -> Result<Value> {
10        let response = self.get("/admin/plugins.json")?;
11        let status = response.status();
12        let text = response.text().context("reading plugins response body")?;
13        if !status.is_success() {
14            return Err(http_error("plugins request", status, &text));
15        }
16        let value: Value = serde_json::from_str(&text).context("parsing plugins response")?;
17        Ok(value)
18    }
19}