From 4cbb60b5ac568a0b1cbb70aae907638d7c54ad4a Mon Sep 17 00:00:00 2001 From: Joshua Coles Date: Tue, 16 Jul 2024 17:22:57 +0100 Subject: [PATCH] Add workspaces --- src/toggl/mod.rs | 38 +++++++++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/src/toggl/mod.rs b/src/toggl/mod.rs index 8d16e6b..64d73a2 100644 --- a/src/toggl/mod.rs +++ b/src/toggl/mod.rs @@ -73,6 +73,22 @@ impl TogglApi { headers } + /// Get the workspaces that a user is a part of + async fn get_users_workspaces( + &self + ) -> Result, TogglError> { + let url = format!("{base_url}/me/workspaces", base_url = BASE_URL); + + let response = self.client.get(&url) + .headers(self.headers.clone()) + .send().await?; + + let data = response.text().await?; + let workspaces: Vec = serde_json::from_str(&data)?; + + Ok(workspaces) + } + /// Fetches all time entries for this user from Toggl that have been modified since the given /// date. pub async fn get_time_entries_for_user_modified_since(&self, since: DateTime) -> Result, TogglError> { @@ -221,7 +237,8 @@ pub mod types { #[serde(with = "duration_field")] duration: Option, - at: DateTime, + #[serde(rename = "at")] + updated_at: DateTime, description: String, @@ -273,7 +290,8 @@ pub mod types { status: ProjectStatus, active: bool, - at: DateTime, + #[serde(rename = "at")] + updated_at: DateTime, start_date: NaiveDate, created_at: DateTime, server_deleted_at: Option>, @@ -300,7 +318,8 @@ pub mod types { pub id: i64, /// Represents the timestamp of the last update made to the client. - pub at: DateTime, + #[serde(rename = "at")] + pub updated_at: DateTime, /// Indicates whether the client is archived or not. pub archived: bool, @@ -328,7 +347,8 @@ pub mod types { name: String, workspace_id: u64, creator_id: u64, - at: DateTime, + #[serde(rename = "at")] + updated_at: DateTime, deleted_at: Option>, permissions: Option, } @@ -358,7 +378,8 @@ pub mod types { pub seconds: u32, pub start: DateTime, pub stop: DateTime, - pub at: DateTime, + #[serde(rename = "at")] + pub updated_at: DateTime, } #[skip_serializing_none] @@ -483,6 +504,13 @@ pub mod types { ds.finish() } } + + #[derive(Serialize, Deserialize, Debug, Clone)] + pub struct Workspace { + pub id: u64, + pub organization_id: u64, + pub name: String, + } } #[derive(Debug, thiserror::Error)]