#garmin #oauth2 #client #fitness #api-client

garmin_client

提供支持oauth2.0的客户端,用于与Garmin接口

7个版本

0.2.0 2024年2月13日
0.1.6 2024年1月26日

#416认证


用于 garmin_download

GPL-3.0 许可证

30KB
526 代码行

示例用法

use std::collections::HashMap;
use garmin_client::GarminClient;
use chrono::NaiveDateTime;

fn main() {
    let args: Vec<String> = env::args().collect();

    // first need to login (hopefully that's obvious)
    let mut client = GarminClient::new();
    client.login(args[1], args[2]);

    // get endpoint for service
    let endpoint = "weight-service/weight/dateRange";

    let weight_date = "2023-01-01 00:00:00";
    let datetime = NaiveDateTime::parse_from_str(&weight_date, "%Y-%m-%d %H:%M:%S").unwrap();

    let params = HashMap::from([
        ("startDate", "2023-01-01"),
        ("endDate", "2023-01-01"),
        ("_", datetime.timestamp_millis().as_str())
    ]);

    let is_json_result = true;
    let filename = "weight.json";
    client.api_request(endpoint, Some(params), is_json_result, filename);
}

建议使用garmin_download crate进行更程序化的控制,并演示如何格式化各种其他API端点。

注意:此客户端使用基本会话管理来存储会话令牌。然而,启发式方法显示,对于给定的会话仅允许一个端点下载(例如,只能下载特定日期的特定睡眠数据,但可以在同一会话中下载另一日期的睡眠数据)。因此,要从同一端点重新下载相同的文件,您需要删除首次登录后保存的.garmin_session.json文件,或者等待该令牌过期。

依赖项

~15–29MB
~462K SLoC