steel-rs 0.1.3

Steel API client
Documentation
use crate::client::{MultipartRequestBuilder, RawRequestBuilder, RequestBuilder, Steel};
use crate::types::*;

pub struct Extensions<'a> {
    client: &'a Steel,
}

impl<'a> Extensions<'a> {
    pub fn new(client: &'a Steel) -> Self {
        Self { client }
    }

    /// List extensions
    pub fn list(&self) -> RequestBuilder<'_, (), (), ExtensionListResponse> {
        let path = "/v1/extensions".to_string();
        self.client
            .call(reqwest::Method::GET, path, None::<()>, None::<()>)
    }

    /// Upload extension
    pub fn upload(
        &self,
        body: ExtensionUploadParams,
    ) -> MultipartRequestBuilder<
        '_,
        impl Fn() -> Result<reqwest::multipart::Form, reqwest::Error>,
        (),
        ExtensionUploadResponse,
    > {
        let path = "/v1/extensions".to_string();
        self.client
            .multipart_call(reqwest::Method::POST, path, None::<()>, move || {
                body.to_form()
            })
    }

    /// Delete all extensions
    pub fn delete_all(&self) -> RequestBuilder<'_, (), (), ExtensionDeleteAllResponse> {
        let path = "/v1/extensions".to_string();
        self.client
            .call(reqwest::Method::DELETE, path, None::<()>, None::<()>)
    }

    /// Download extension
    pub fn download(&self, extension_id: &str) -> RawRequestBuilder<'_, (), ()> {
        let path = format!(
            "/v1/extensions/{}",
            crate::client::encode_path(extension_id)
        );
        self.client
            .raw_call(reqwest::Method::GET, path, None::<()>, None::<()>)
    }

    /// Update extension
    pub fn update(
        &self,
        extension_id: &str,
        body: ExtensionUpdateParams,
    ) -> MultipartRequestBuilder<
        '_,
        impl Fn() -> Result<reqwest::multipart::Form, reqwest::Error>,
        (),
        ExtensionUpdateResponse,
    > {
        let path = format!(
            "/v1/extensions/{}",
            crate::client::encode_path(extension_id)
        );
        self.client
            .multipart_call(reqwest::Method::PUT, path, None::<()>, move || {
                body.to_form()
            })
    }

    /// Delete extension
    pub fn delete(
        &self,
        extension_id: &str,
    ) -> RequestBuilder<'_, (), (), ExtensionDeleteResponse> {
        let path = format!(
            "/v1/extensions/{}",
            crate::client::encode_path(extension_id)
        );
        self.client
            .call(reqwest::Method::DELETE, path, None::<()>, None::<()>)
    }
}