sfr_slack_api/api/
files_complete_upload_external.rs1use sfr_types as st;
6
7pub use st::FilesCompleteUploadExternalResponse;
8
9use crate::{Client, Request};
10
11#[derive(Debug)]
13pub struct FilesCompleteUploadExternal(st::FilesCompleteUploadExternalRequest);
14
15const API_CODE: &str = "files.completeUploadExternal";
17
18impl FilesCompleteUploadExternal {
19 async fn request_inner(
21 &self,
22 client: &Client,
23 ) -> Result<FilesCompleteUploadExternalResponse, st::Error> {
24 #[allow(clippy::missing_docs_in_private_items)] 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}