aboutsummaryrefslogtreecommitdiff
path: root/lockchain-files/examples/create.rs
blob: 4b191802cbaae1ef47b0b2c98a57386f00a7d7e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
extern crate lockchain_core as lcc;
extern crate lockchain_files as files;

use files::DataVault;
use lcc::traits::Vault;
use lcc::users::{User, UserStore};
use lcc::{EncryptedBody, Payload, Record};
use std::env;

fn main() {
    if env::args().len() == 3 {
        let path = env::args().nth(1).unwrap();
        let name = env::args().nth(2).unwrap();

        let mut vault: DataVault<EncryptedBody> = DataVault::new(&name, &path);
        let mut store = match (
            vault.meta_pull_domain("userstore"),
            vault.meta_pull_domain("registry"),
        ) {
            (Some(users), Some(registry)) => (users.clone(), registry.clone()).into(),
            _ => UserStore::default(),
        };

        /* Some users of our vault have the same password :S */
        store.add(User::register("alice", "password"));
        let token = store.get_token(vec!());

        let (users, registry) = store.into();

        vault.meta_push_domain(users);
        vault.meta_push_domain(registry);
        vault.sync();
    } else {
        eprintln!("Usage: create <path> <name> [FLAGS] (there are no flags)")
    }
}