Add Clients
This commit is contained in:
parent
f447cabed1
commit
29a8865bd5
@ -10,5 +10,5 @@ async fn main() {
|
|||||||
sensitive::WORKSPACE_ID,
|
sensitive::WORKSPACE_ID,
|
||||||
);
|
);
|
||||||
|
|
||||||
dbg!(api.get_projects().await);
|
dbg!(api.get_clients().await);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -97,6 +97,18 @@ impl TogglApi {
|
|||||||
.send().await?).await
|
.send().await?).await
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub async fn get_clients(&self) -> Result<Vec<types::TrackingClient>, TogglError> {
|
||||||
|
let url = format!(
|
||||||
|
"{base_url}/workspaces/{workspace_id}/clients",
|
||||||
|
base_url = BASE_URL,
|
||||||
|
workspace_id = self.workspace_id
|
||||||
|
);
|
||||||
|
|
||||||
|
Self::parse(self.client.get(&url)
|
||||||
|
.headers(self.headers.clone())
|
||||||
|
.send().await?).await
|
||||||
|
}
|
||||||
|
|
||||||
async fn parse<T: DeserializeOwned>(response: Response) -> Result<T, TogglError> {
|
async fn parse<T: DeserializeOwned>(response: Response) -> Result<T, TogglError> {
|
||||||
let data = response.text().await?;
|
let data = response.text().await?;
|
||||||
let result = serde_json_path_to_error::from_str(&data);
|
let result = serde_json_path_to_error::from_str(&data);
|
||||||
@ -178,7 +190,7 @@ mod types {
|
|||||||
|
|
||||||
name: String,
|
name: String,
|
||||||
color: String,
|
color: String,
|
||||||
status: Status,
|
status: ProjectStatus,
|
||||||
active: bool,
|
active: bool,
|
||||||
|
|
||||||
at: DateTime<Utc>,
|
at: DateTime<Utc>,
|
||||||
@ -193,13 +205,39 @@ mod types {
|
|||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug, Clone)]
|
#[derive(Serialize, Deserialize, Debug, Clone)]
|
||||||
#[serde(rename_all = "lowercase")]
|
#[serde(rename_all = "lowercase")]
|
||||||
pub enum Status {
|
pub enum ProjectStatus {
|
||||||
Upcoming,
|
Upcoming,
|
||||||
Active,
|
Active,
|
||||||
Archived,
|
Archived,
|
||||||
Ended,
|
Ended,
|
||||||
Deleted,
|
Deleted,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Debug, Clone)]
|
||||||
|
pub struct TrackingClient {
|
||||||
|
/// The unique identifier for the client.
|
||||||
|
pub id: i64,
|
||||||
|
|
||||||
|
/// Represents the timestamp of the last update made to the client.
|
||||||
|
pub at: DateTime<Utc>,
|
||||||
|
|
||||||
|
/// Indicates whether the client is archived or not.
|
||||||
|
pub archived: bool,
|
||||||
|
|
||||||
|
pub creator_id: i64,
|
||||||
|
pub integration_provider: Option<String>,
|
||||||
|
pub notes: Option<String>,
|
||||||
|
|
||||||
|
/// The name of the client.
|
||||||
|
pub name: String,
|
||||||
|
|
||||||
|
/// Indicates the timestamp when the client was deleted. If the client is not deleted, this property will be null.
|
||||||
|
pub server_deleted_at: Option<DateTime<Utc>>,
|
||||||
|
|
||||||
|
/// The Workspace ID associated with the client.
|
||||||
|
#[serde(rename = "wid")]
|
||||||
|
pub workspace_id: i32,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, thiserror::Error)]
|
#[derive(Debug, thiserror::Error)]
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user