diff options
Diffstat (limited to 'examples/zotcli.rs')
-rw-r--r-- | examples/zotcli.rs | 147 |
1 files changed, 0 insertions, 147 deletions
diff --git a/examples/zotcli.rs b/examples/zotcli.rs deleted file mode 100644 index 0be566f..0000000 --- a/examples/zotcli.rs +++ /dev/null @@ -1,147 +0,0 @@ -/* Example Zot API command line utility, part of zotapi. - * Copyright (C) 2018 Harald Eilertsen <haraldei@anduin.net> - * - * 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 <http://www.gnu.org/licenses/>. - */ - -use clap::{clap_app, crate_authors, crate_description, crate_name, crate_version}; -use dotenv::dotenv; -use std::env; -use std::str::FromStr; - -mod zot; - -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 = clap_app!(app => - (name: crate_name!()) - (version: crate_version!()) - (author: crate_authors!()) - (about: crate_description!()) - (@subcommand channel => - (about: "Fetch the channel stream") - (@arg raw: --raw "Display raw json payload") - ) - (@subcommand network => - (about: "Fetch the network stream") - (@arg raw: --raw "Display raw json payload") - ) - (@subcommand abook => - (about: "Fetch address book/contact info") - (@arg raw: --raw "Display raw json payload") - ) - (@subcommand abconfig => - (about: "Fetch abconfig") - ) - (@subcommand group => - (about: "Fetch privacy groups") - (@arg raw: --raw "Display raw json payload") - (@group selector => - (@arg ID: --id +takes_value "Fetch members of group <ID>") - (@arg GNAME: --name +takes_value "Fetch members of group <GNAME>") - ) - ) - (@subcommand xchan => - (about: "Fetch xchan info") - (@arg raw: --raw "Display raw json payload") - (@arg addr: --addr "ID is given as webbie (default)") - (@arg hash: --hash "ID is given as xchan hash") - (@arg guid: --guid "ID is given as a GUID") - (@arg ID: +required "id (webbie, hash or GUID) of xchan to fetch") - ) - (@subcommand post => - (about: "Post a new message") - (@arg FILE: "A text file containing the body of the message") - (@arg TITLE: --title +takes_value "Set a title for the message") - (@arg ATTACH: --attach [FILE] "Attach a file or image to the post") - (@arg GROUP: --group [groups] "Limit distribution to the specified group(s) separated by comma") - ) - ) - .get_matches(); - - let client = zotapi::client(&site, &user, &password); - - match matches.subcommand() { - ("channel", Some(m)) => { - let raw = m.is_present("raw"); - zot::channel_stream::fetch(&client, raw); - } - ("network", Some(m)) => { - let raw = m.is_present("raw"); - zot::network_stream::fetch(&client, raw); - } - ("abconfig", _) => { - zot::abconfig::fetch(&client); - } - ("abook", Some(m)) => { - let raw = m.is_present("raw"); - zot::abook::fetch(&client, raw); - } - ("group", Some(m)) => { - if let Some(id) = m.value_of("ID") { - let res = zotapi::group_members() - .by_group_id(u64::from_str(id).unwrap()) - .fetch(&client) - .unwrap(); - - if m.is_present("raw") { - println!("{}", res); - } else { - zot::group::list_members(&res); - } - } else if let Some(gname) = m.value_of("GNAME") { - let res = zotapi::group_members() - .by_group_name(gname) - .fetch(&client) - .unwrap(); - - if m.is_present("raw") { - println!("{}", res); - } else { - zot::group::list_members(&res); - } - } else { - let res = zotapi::group().fetch(&client).unwrap(); - - if m.is_present("raw") { - println!("{}", res); - } else { - zot::group::list(&res); - } - } - } - ("xchan", Some(m)) => { - let raw = m.is_present("raw"); - let t = if m.is_present("guid") { - zot::xchan::Type::GUID - } else if m.is_present("hash") { - zot::xchan::Type::Hash - } else { - zot::xchan::Type::Addr - }; - - zot::xchan::fetch(&client, raw, t, m.value_of("ID").unwrap()); - } - ("post", Some(m)) => { - zot::item::post(&client, m); - } - _ => { - println!("{}", matches.usage()); - } - } -} |