2 个版本
0.1.1 | 2024 年 2 月 14 日 |
---|---|
0.1.0 | 2024 年 1 月 30 日 |
#452 in #api-client
32KB
412 行
Withings-rs
Rust 的 Withings API 客户端
关于
这是一个 Rust 项目的初次尝试。这将使用 OAuth 访问 Withings API 并拉取您的数据。
使用
您首先需要在 Withings 上创建一个开发账户以获取 client_id
和 client_secret
Withings 开发门户。将重定向 URL 设置为 https://127.0.0.1:8888
,此客户端将在运行的机器上绑定到该地址。要存储令牌到不是默认的 config.json
的配置文件,设置一个环境变量 WITHINGS_CONFIG_FILE
,目录路径必须存在,因为代码目前不会尝试创建目录结构
示例使用
use withings_rs::{api::{auth, measure}, models::meas::CategoryType};
use std::env;
use simple_logger::SimpleLogger;
use std::path::Path;
use withings_rs::models::MeasureType;
fn main () {
println!("testing withings-rs\n");
// Initialize the logger to see the output
SimpleLogger::new().init().unwrap();
// Get the client id from the environment variable
let client_id = env::var("WITHINGS_CLIENT_ID").unwrap();
// Get the config file if it exists or create a new one
let config_file = auth::get_config_file();
// Get the access token from the config file or get a new one
let access_token = get_access_token(config_file);
// Get the CategoryType and MeasureType
let category = CategoryType::Measures.to_string();
let weight = MeasureType::Weight.to_string();
// set up the measure api arguments
let params = measure::MeasurementParams{
access_token: access_token.unwrap().to_string(),
client_id,
category,
meastype: weight,
start: None,
end: None,
offset: None,
lastupdate: Some("1706108118".to_string())
};
// Get the measurements
let measurements = measure::get_measurements(
¶ms
).unwrap();
println!("weight: {:?}", measurements.body.measuregrps[0].measures[0].value);
}
// Get the access token from the config file or get a new one
fn get_access_token(config_file: String) -> Result<String, String>{
let client_id = env::var("WITHINGS_CLIENT_ID").unwrap();
let client_secret = env::var("WITHINGS_CLIENT_SECRET").unwrap();
// Check if the config file exists and get the access token or get a new one
if Path::new(&config_file).exists() {
let access_token = auth::refresh_token(client_id, client_secret);
Ok(access_token.unwrap().to_string())
} else {
let access_token = auth::get_access_code(client_id, client_secret);
Ok(access_token.unwrap().to_string())
}
}
免责声明
此库与 Withings 无关。自行承担风险。这是一个正在进行中的工作。目前它只执行认证和拉取测量 API。
依赖关系
~4–19MB
~254K SLoC