etebase_test/
etebase_test.rs

1// SPDX-FileCopyrightText: © 2020 EteSync Authors
2// SPDX-License-Identifier: LGPL-2.1-only
3
4use std::env;
5
6use etebase::{error::Result, Account, Client, Collection, Item};
7
8const CLIENT_NAME: &str = "etebase-example";
9
10fn print_collection(collection: &Collection) {
11    println!("UID: {}", &collection.uid());
12    println!("Meta: {:?}", &collection.meta().unwrap());
13    println!();
14}
15
16fn print_item(item: &Item) {
17    println!("UID: {}", &item.uid());
18    println!("Meta: {:?}", &item.meta().unwrap());
19    println!();
20}
21
22fn main() -> Result<()> {
23    let args: Vec<String> = env::args().collect();
24
25    if args.len() < 4 {
26        println!("Help: ./etebase_test USERNAME PASSWORD SERVER_URL [COLLECTION_UID]");
27        std::process::exit(1);
28    }
29
30    let username = &args[1];
31    let password = &args[2];
32    let server_url = &args[3];
33
34    let client = Client::new(CLIENT_NAME, server_url)?;
35    let etebase = Account::login(client, username, password)?;
36    let col_mgr = etebase.collection_manager()?;
37    if args.len() >= 5 {
38        let col_uid = &args[4];
39        let col = col_mgr.fetch(col_uid, None)?;
40        let it_mgr = col_mgr.item_manager(&col)?;
41        let items = it_mgr.list(None)?;
42
43        print_collection(&col);
44        for item in items.data() {
45            print_item(item);
46        }
47    } else {
48        let collections = col_mgr.list("some.coltype", None)?;
49        for col in collections.data() {
50            print_collection(col);
51        }
52    }
53
54    etebase.logout()?;
55
56    Ok(())
57}