sfr_slack_api/api/
files_complete_upload_external.rs

1//! The Slack API definition of `files.completeUploadExternal`.
2//!
3//! <https://api.slack.com/methods/files.completeUploadExternal>
4
5use sfr_types as st;
6
7pub use st::FilesCompleteUploadExternalResponse;
8
9use crate::{Client, Request};
10
11/// The request object for <https://api.slack.com/methods/files.completeUploadExternal>.
12#[derive(Debug)]
13pub struct FilesCompleteUploadExternal(st::FilesCompleteUploadExternalRequest);
14
15/// The code indicating the request handled in this file.
16const API_CODE: &str = "files.completeUploadExternal";
17
18impl FilesCompleteUploadExternal {
19    /// Requests `files.completeUploadExternal` to Slack.
20    async fn request_inner(
21        &self,
22        client: &Client,
23    ) -> Result<FilesCompleteUploadExternalResponse, st::Error> {
24        #[allow(clippy::missing_docs_in_private_items)] // https://github.com/rust-lang/rust-clippy/issues/13298
25        const URL: &str = "https://slack.com/api/files.completeUploadExternal";
26
27        tracing::debug!("self = {self:?}");
28
29        let response = client
30            .client()
31            .post(URL)
32            .bearer_auth(client.token())
33            .json(&self.0)
34            .send()
35            .await
36            .map_err(|e| st::Error::failed_to_request_by_http(API_CODE, e))?;
37        tracing::debug!("response = {response:?}");
38
39        let body: serde_json::Value = response
40            .json()
41            .await
42            .map_err(|e| st::Error::failed_to_read_json(API_CODE, e))?;
43        tracing::debug!("body = {body:?}");
44
45        body.try_into()
46    }
47}
48
49impl From<st::FilesCompleteUploadExternalRequest> for FilesCompleteUploadExternal {
50    fn from(inner: st::FilesCompleteUploadExternalRequest) -> Self {
51        Self(inner)
52    }
53}
54
55impl Request for FilesCompleteUploadExternal {
56    type Response = FilesCompleteUploadExternalResponse;
57
58    async fn request(self, client: &Client) -> Result<Self::Response, st::Error> {
59        self.request_inner(client).await
60    }
61}