Skip to content

Instantly share code, notes, and snippets.

@zupzup
zupzup / main.rs
Created October 29, 2020 13:36
Timeular Public API activities 1
println!("fetching activities...");
let activities = fetch_activities(&token).await?;
println!("activities: {:?}", activities);
@zupzup
zupzup / main.rs
Created October 29, 2020 13:36
Timeular Public API activities 2
#[derive(Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
struct ActivitiesResponse {
activities: Vec<Activity>,
inactive_activities: Vec<Activity>,
archived_activities: Vec<Activity>,
}
#[derive(Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
@zupzup
zupzup / main.rs
Created October 29, 2020 13:37
Timeular Public API activities tracking
if !activities.is_empty() {
println!("starting to track...");
let tracking = start_tracking(&activities.get(0).expect("exists").id, &token).await?;
println!("started tracking: {:?}", tracking);
let time_entry = stop_tracking(&token).await?;
println!("created time entry: {:?}", time_entry);
}
@zupzup
zupzup / main.rs
Created October 29, 2020 13:37
Timeular Public API start tracking
#[derive(Serialize, Debug)]
#[serde(rename_all = "camelCase")]
struct TrackingRequest {
started_at: String,
}
#[derive(Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
struct TrackingResponse {
current_tracking: Tracking,
@zupzup
zupzup / main.rs
Created October 29, 2020 13:37
Timeular Public API stop tracking
#[derive(Serialize, Debug)]
#[serde(rename_all = "camelCase")]
struct StopTrackingRequest {
stopped_at: String,
}
#[derive(Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
struct TimeEntryResponse {
created_time_entry: TimeEntry,
@zupzup
zupzup / main.rs
Created October 29, 2020 13:37
Timeular Public API reports 1
println!("creating report...");
generate_report(&token).await?;
println!("downloaded report to: {}", REPORT_FILE);
@zupzup
zupzup / main.rs
Created October 29, 2020 13:37
Timeular Public API reports 2
use tokio::fs;
async fn generate_report(token: &str) -> Result<(), Error> {
let resp = CLIENT
.get(&url(
"/report/2020-01-01T00:00:00.000/2020-12-31T23:59:59.999?timezone=Europe/Vienna",
))
.header("Authorization", auth(token))
.send()
.await?
@zupzup
zupzup / shell
Created October 29, 2020 13:37
Timeular Public API run
export TMLR_API_KEY=<your api key>
export TMLR_API_SECRET=<your api secret>
cargo run
@zupzup
zupzup / Cargo.toml
Created December 2, 2020 11:59
Timeular Webhooks Deps
[dependencies]
reqwest = { version = "0.10", features = ["json"] }
tokio = { version = "0.2", features = ["macros", "rt-threaded"] }
serde = {version = "1.0", features = ["derive"] }
serde_json = "1.0"
once_cell = "1.4"
warp = "0.2"
@zupzup
zupzup / shell
Created December 2, 2020 11:59
Timeular Webhooks LT
lt --port 8000
your url is: https://friendly-mule-3.loca.lt