Skip to main content

asana/request/
add_project_for_task.rs

1use serde_json::json;
2use crate::model::*;
3use crate::FluentRequest;
4use serde::{Serialize, Deserialize};
5use httpclient::InMemoryResponseExt;
6use crate::AsanaClient;
7/**You should use this struct via [`AsanaClient::add_project_for_task`].
8
9On request success, this will return a [`AddProjectForTaskResponse`].*/
10#[derive(Debug, Clone, Serialize, Deserialize)]
11pub struct AddProjectForTaskRequest {
12    pub data: TaskAddProjectRequest,
13    pub opt_pretty: Option<bool>,
14    pub task_gid: String,
15}
16impl AddProjectForTaskRequest {}
17impl FluentRequest<'_, AddProjectForTaskRequest> {
18    pub fn opt_pretty(mut self, opt_pretty: bool) -> Self {
19        self.params.opt_pretty = Some(opt_pretty);
20        self
21    }
22}
23impl<'a> ::std::future::IntoFuture for FluentRequest<'a, AddProjectForTaskRequest> {
24    type Output = httpclient::InMemoryResult<AddProjectForTaskResponse>;
25    type IntoFuture = ::futures::future::BoxFuture<'a, Self::Output>;
26    fn into_future(self) -> Self::IntoFuture {
27        Box::pin(async move {
28            let url = &format!(
29                "/tasks/{task_gid}/addProject", task_gid = self.params.task_gid
30            );
31            let mut r = self.client.client.post(url);
32            r = r.json(json!({ "data" : self.params.data }));
33            if let Some(ref unwrapped) = self.params.opt_pretty {
34                r = r.query("opt_pretty", &unwrapped.to_string());
35            }
36            r = self.client.authenticate(r);
37            let res = r.await?;
38            res.json().map_err(Into::into)
39        })
40    }
41}