/* Example Zot API command line utility, part of zotapi. * Copyright (C) 2018 Harald Eilertsen * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ extern crate zotapi; extern crate dotenv; #[macro_use] extern crate clap; extern crate serde_json; use clap::{Arg, SubCommand}; use dotenv::dotenv; use std::env; mod abook; mod channel_stream; mod network_stream; fn main() { dotenv().ok(); let site = env::var("HZ_SITE").expect("SITE variable expected"); let user = env::var("HZ_USER").expect("USER variable expected"); let password = env::var("HZ_PASSWORD").expect("PASSWORD variable expected"); let matches = app_from_crate!() .subcommand( SubCommand::with_name("channel-stream") .about("Fetch the channel stream") .arg(Arg::with_name("raw") .long("raw") .help("Display raw json payload"))) .subcommand( SubCommand::with_name("network-stream") .about("Fetch the network stream") .arg(Arg::with_name("raw") .long("raw") .help("Display raw json payload"))) .subcommand( SubCommand::with_name("abook") .about("Fetch address book/contact info") .arg(Arg::with_name("raw") .long("raw") .help("Display raw json payload"))) .get_matches(); let client = zotapi::client(&site, &user, &password); match matches.subcommand() { ("channel-stream", Some(m)) => { let raw = m.is_present("raw"); channel_stream::fetch(&client, raw); }, ("network-stream", Some(m)) => { let raw = m.is_present("raw"); network_stream::fetch(&client, raw); }, ("abook", Some(m)) => { let raw = m.is_present("raw"); abook::fetch(&client, raw); }, _ => { println!("{}", matches.usage()); }, } }