rust-cnb 0.1.2

[DEPRECATED - use `cnb` crate instead] rust-cnb with Generated API client
Documentation
//! Missions API 客户端

use crate::error::{ApiError, Result};
use reqwest::Client;
use serde_json::Value;
use url::Url;

/// Missions API 客户端
pub struct MissionsClient {
    base_url: String,
    client: Client,
}

impl MissionsClient {
    /// 创建新的 Missions API 客户端
    pub fn new(base_url: String, client: Client) -> Self {
        Self { base_url, client }
    }

    /// 设置认证信息
    pub fn with_auth(self, token: &str) -> Self {
        // 这里可以扩展认证逻辑
        self
    }

    /// 查询任务集视图配置信息。Get mission view config.
    pub async fn get_mission_mission_view(
        &self,
        mission: String,
        id: String,
    ) -> Result<Value> {
        let path = format!("/{}/-/mission/view", mission);
        let mut url = Url::parse(&format!("{}{}", self.base_url, path))?;
        
        url.query_pairs_mut().append_pair("id", &id.to_string());

                let request = self.client.request(
            reqwest::Method::GET,
            url
        );
        



        let response = request.send().await?;
        
        if response.status().is_success() {
            let json: Value = response.json().await?;
            Ok(json)
        } else {
            Err(ApiError::HttpError(response.status().as_u16()))
        }
    }

    /// 设置任务集视图配置信息。Set mission view config.
    pub async fn post_mission_mission_view(
        &self,
        mission: String,
        request_data: serde_json::Value,
    ) -> Result<Value> {
        let path = format!("/{}/-/mission/view", mission);
        let url = Url::parse(&format!("{}{}", self.base_url, path))?;
        

        
        let mut request = self.client.request(
            reqwest::Method::POST,
            url
        );



        request = request.json(&request_data);

        let response = request.send().await?;
        
        if response.status().is_success() {
            let json: Value = response.json().await?;
            Ok(json)
        } else {
            Err(ApiError::HttpError(response.status().as_u16()))
        }
    }

    /// 获取任务集视图列表。Get view list of a mission.
    pub async fn get_mission_mission_view_list(
        &self,
        mission: String,
    ) -> Result<Value> {
        let path = format!("/{}/-/mission/view-list", mission);
        let url = Url::parse(&format!("{}{}", self.base_url, path))?;
        

                let request = self.client.request(
            reqwest::Method::GET,
            url
        );
        



        let response = request.send().await?;
        
        if response.status().is_success() {
            let json: Value = response.json().await?;
            Ok(json)
        } else {
            Err(ApiError::HttpError(response.status().as_u16()))
        }
    }

    /// 排序任务集视图。Sort mission view list.
    pub async fn post_mission_mission_view_list(
        &self,
        mission: String,
        request_data: serde_json::Value,
    ) -> Result<Value> {
        let path = format!("/{}/-/mission/view-list", mission);
        let url = Url::parse(&format!("{}{}", self.base_url, path))?;
        

        
        let mut request = self.client.request(
            reqwest::Method::POST,
            url
        );



        request = request.json(&request_data);

        let response = request.send().await?;
        
        if response.status().is_success() {
            let json: Value = response.json().await?;
            Ok(json)
        } else {
            Err(ApiError::HttpError(response.status().as_u16()))
        }
    }

    /// 添加、修改任务集视图。Update a mission view or add a new one.
    pub async fn put_mission_mission_view_list(
        &self,
        mission: String,
        request_data: serde_json::Value,
    ) -> Result<Value> {
        let path = format!("/{}/-/mission/view-list", mission);
        let url = Url::parse(&format!("{}{}", self.base_url, path))?;
        

        
        let mut request = self.client.request(
            reqwest::Method::PUT,
            url
        );



        request = request.json(&request_data);

        let response = request.send().await?;
        
        if response.status().is_success() {
            let json: Value = response.json().await?;
            Ok(json)
        } else {
            Err(ApiError::HttpError(response.status().as_u16()))
        }
    }

    /// 改变任务集可见性
    pub async fn post_mission_settings_set_visibility(
        &self,
        mission: String,
        visibility: String,
    ) -> Result<Value> {
        let path = format!("/{}/-/settings/set_visibility", mission);
        let mut url = Url::parse(&format!("{}{}", self.base_url, path))?;
        
        url.query_pairs_mut().append_pair("visibility", &visibility.to_string());

                let request = self.client.request(
            reqwest::Method::POST,
            url
        );
        



        let response = request.send().await?;
        
        if response.status().is_success() {
            let json: Value = response.json().await?;
            Ok(json)
        } else {
            Err(ApiError::HttpError(response.status().as_u16()))
        }
    }

    /// 删除指定任务集。Delete the specified mission.
    pub async fn delete_mission(
        &self,
        mission: String,
        x_cnb_identity_ticket: Option<String>,
    ) -> Result<Value> {
        let path = format!("/{}", mission);
        let url = Url::parse(&format!("{}{}", self.base_url, path))?;
        

                let mut request = self.client.request(
            reqwest::Method::DELETE,
            url
        );
        

        if let Some(value) = x_cnb_identity_ticket {
            request = request.header("x-cnb-identity-ticket", value);
        }


        let response = request.send().await?;
        
        if response.status().is_success() {
            let json: Value = response.json().await?;
            Ok(json)
        } else {
            Err(ApiError::HttpError(response.status().as_u16()))
        }
    }

}