#nas #synology #api-client #xpenology

nology-api

Rust API客户端,用于synology/xpenology NAS

2个版本

0.0.2 2023年2月20日
0.0.1 2023年2月19日

#4 in #synology

MIT授权

12KB
271 代码行

Rust API客户端,用于synology/xpenology NAS

包含一些逆向工程API方法

功能

  • 浏览项目(照片和视频)
  • 浏览相册
  • 创建相册

如果您需要扩展功能,您 可以

示例

use nology_api::*;
use chrono::{Utc, Duration};

async fn integration_test() -> SynoResult<()> {
    let account =   env::var("SYNO_USER").unwrap();
    let passwd =    env::var("SYNO_PASS").unwrap();

    //Create service by login
    let service = SynoService::login(
        Default::default(), 
        "http://192.168.1.199:5000/webapi/entry.cgi", 
        LoginRequest { account, passwd }
    ).await?;
    //retrieve last photos (or videos) for 100 days (limit 1000)
    let photos = service.request(browse::ListRequest{
        offset: 0,
        limit: 1000,
        start_time: Utc::now() - Duration::days(100),
        end_time: Utc::now(),
    }).await?; 
    //take 3 last items
    let items = photos.list.into_iter().map(|bi|bi.id).take(3).collect();
    //and create album with it
    let new_album = service.request(album::CreateRequest {
        name: format!("test-album-{}", Utc::now().timestamp()),
        items,
    }).await.unwrap();
    log::info!("album: {new_album:?}");

    Ok(())
}

扩展

您可以为自己的请求/响应结构体创建请求,并实现特 SynoService::request,通过实现特 Request

依赖关系

~5–16MB
~244K SLoC