diff options
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/zot/abconfig.rs | 38 | ||||
| -rw-r--r-- | examples/zot/abook.rs | 29 | ||||
| -rw-r--r-- | examples/zot/channel_stream.rs | 104 | ||||
| -rw-r--r-- | examples/zot/group.rs | 70 | ||||
| -rw-r--r-- | examples/zot/item.rs | 57 | ||||
| -rw-r--r-- | examples/zot/mod.rs | 7 | ||||
| -rw-r--r-- | examples/zot/network_stream.rs | 104 | ||||
| -rw-r--r-- | examples/zot/xchan.rs | 41 | ||||
| -rw-r--r-- | examples/zotcli.rs | 147 | 
9 files changed, 0 insertions, 597 deletions
diff --git a/examples/zot/abconfig.rs b/examples/zot/abconfig.rs deleted file mode 100644 index 2e357e4..0000000 --- a/examples/zot/abconfig.rs +++ /dev/null @@ -1,38 +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 zotapi; - -pub fn fetch(client: &zotapi::Client) { -    match zotapi::ABConfig::z().fetch(&client) { -        Ok(v) => { -            println!("Id:    Chan:  Cat:            Key:            Val: xchan:"); -            for entry in v { -                println!("{:6} {:6} {:15} {:15} {:4} {}", -                    entry.id, -                    entry.chan, -                    entry.cat, -                    entry.k, -                    entry.v, -                    entry.xchan); -            } -        } -        Err(e) => { -            println!("{:?}", e); -        } -    } -} diff --git a/examples/zot/abook.rs b/examples/zot/abook.rs deleted file mode 100644 index 97025c3..0000000 --- a/examples/zot/abook.rs +++ /dev/null @@ -1,29 +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/>. - */ - -pub fn fetch(client: &zotapi::Client, _raw: bool) { -    match zotapi::Abook::z().fetch(&client) { -        Ok(abooks) => { -            for b in abooks { -                println!("{:?}", b); -            } -        } -        Err(e) => { -            println!("{:?}", e); -        } -    } -} diff --git a/examples/zot/channel_stream.rs b/examples/zot/channel_stream.rs deleted file mode 100644 index bad7152..0000000 --- a/examples/zot/channel_stream.rs +++ /dev/null @@ -1,104 +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 zotapi; - -use serde_json; -use std::iter::Iterator; - -pub fn fetch(client: &zotapi::Client, raw: bool) { -    match zotapi::channel_stream().fetch(&client) { -        Ok(payload) => { -            if raw { -                println!("{}", payload); -            } else { -                list(&payload); -            } -        } -        Err(e) => { -            println!("Error getting channel stream: {:?}", e); -        } -    } -} - -fn list(payload: &str) { -    match serde_json::from_str(&payload) { -        Ok(serde_json::Value::Array(v)) => { -            for item in v.into_iter() { -                print_item(&item); -                println!("-----"); -            } -        } -        Ok(_) => println!("Wrong type returned, expected an array."), -        Err(e) => { -            println!("Error: {}", e); -        } -    } -} - -fn get_str(v: &serde_json::Value) -> &str { -    v.as_str().unwrap_or("") -} - -fn get_verb(item: &serde_json::Value) -> &str { -    match get_str(&item["verb"]).split("/").last() { -        Some("post") => "posted", -        Some("like") => "liked", -        Some("share") => "shared", -        Some("dislike") => "disliked", -        _ => "unknown verb", -    } -} - -fn get_object_type(item: &serde_json::Value) -> &str { -    get_str(&item["object_type"]) -        .split("/") -        .last() -        .unwrap_or("unknown object") -} - -fn get_tags(item: &serde_json::Value) -> String { -    match item["tags"] { -        serde_json::Value::Array(ref v) => v -            .iter() -            .map(|t| { -                let prefix = match get_str(&t["type"]) { -                    "hashtag" => "#", -                    "forum" => "!", -                    "mention" => "@", -                    _ => "", -                }; -                format!("{}{}", prefix, get_str(&t["tag"])) -            }) -            .collect::<Vec<_>>() -            .join(", "), -        serde_json::Value::Null => String::new(), -        _ => String::from("invalid tags, expected array..."), -    } -} - -fn print_item(item: &serde_json::Value) { -    let author = &item["author"]; -    print!("{} ", get_str(&item["created"])); -    print!("{} ", get_str(&author["name"])); -    println!("{} a {}", get_verb(&item), get_object_type(&item)); -    println!("URL:   {}", get_str(&author["url"])); -    println!("Proto: {}", get_str(&author["network"])); -    println!("Title: {}", get_str(&item["title"])); -    println!("Tags : {}", get_tags(&item)); -    println!("Message:\n{}", get_str(&item["body"])); -} diff --git a/examples/zot/group.rs b/examples/zot/group.rs deleted file mode 100644 index 9264cdc..0000000 --- a/examples/zot/group.rs +++ /dev/null @@ -1,70 +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 serde_json::{from_str, Value}; - -pub fn list(data: &str) { -    if let Ok(Value::Array(groups)) = from_str(&data) { -        println!("Id  | Group name       | uid | flags | hash"); -        println!("----+------------------+-----+-------+-------------------------"); - -        for group in groups { -            let mut flags = String::new(); - -            if let Some(visible) = group["visible"].as_u64() { -                if visible != 0 { -                    flags += "v"; -                } -            } - -            if let Some(deleted) = group["deleted"].as_u64() { -                if deleted != 0 { -                    flags += "d"; -                } -            } - -            print!( -                "{:>3} | {:16} | {:>3} | {:5} | {}\n", -                group["id"].as_u64().unwrap(), -                group["gname"].as_str().unwrap(), -                group["uid"].as_u64().unwrap(), -                flags, -                group["hash"].as_str().unwrap() -            ); -        } -    } else { -        eprintln!("Invalid data"); -    } -} - -pub fn list_members(data: &str) { -    if let Ok(Value::Array(members)) = from_str(&data) { -        println!("Id  | Name                          | Address"); -        println!("----+-------------------------------+------------------------"); - -        for member in members { -            println!( -                "{:>3} | {:29} | {}", -                member["id"].as_u64().unwrap(), -                member["xchan_name"].as_str().unwrap(), -                member["xchan_addr"].as_str().unwrap() -            ); -        } -    } else { -        eprintln!("Invalid data"); -    } -} diff --git a/examples/zot/item.rs b/examples/zot/item.rs deleted file mode 100644 index 648a9f0..0000000 --- a/examples/zot/item.rs +++ /dev/null @@ -1,57 +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::ArgMatches; -use zotapi; - -pub fn post(client: &zotapi::Client, args: &ArgMatches) { -    let mut msg = zotapi::item(); -    let body: String; - -    if let Some(file) = dbg!(args.value_of("FILE")) { -        let buf = std::fs::read(file).expect("Invalid file name"); -        body = String::from_utf8(buf).expect("File contained invalid char data."); -        msg.body(&body); -    } - -    if let Some(title) = dbg!(args.value_of("TITLE")) { -        msg.title(title); -    } - -    if let Some(file) = dbg!(args.value_of("ATTACH")) { -        msg.file(file); -    } - -    if let Some(groups) = dbg!(args.value_of("GROUP")) { -        for g in groups.split(",") { -            msg.group_allow(g); -        } -    } - -    match msg.create(&client) { -        Ok(res) => { -            if res.success { -                println!("New item with id {} posted successfully!", res.item_id); -            } else { -                println!("The item could not be posted."); -            } -        } -        Err(e) => { -            println!("Error posting message: {:?}", e); -        } -    } -} diff --git a/examples/zot/mod.rs b/examples/zot/mod.rs deleted file mode 100644 index 706f496..0000000 --- a/examples/zot/mod.rs +++ /dev/null @@ -1,7 +0,0 @@ -pub mod abconfig; -pub mod abook; -pub mod channel_stream; -pub mod group; -pub mod item; -pub mod network_stream; -pub mod xchan; diff --git a/examples/zot/network_stream.rs b/examples/zot/network_stream.rs deleted file mode 100644 index 0e6edb4..0000000 --- a/examples/zot/network_stream.rs +++ /dev/null @@ -1,104 +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 zotapi; - -use serde_json; -use std::iter::Iterator; - -pub fn fetch(client: &zotapi::Client, raw: bool) { -    match zotapi::network_stream().fetch(&client) { -        Ok(payload) => { -            if raw { -                println!("{}", payload); -            } else { -                list(&payload); -            } -        } -        Err(e) => { -            println!("Error getting channel stream: {:?}", e); -        } -    } -} - -fn list(payload: &str) { -    match serde_json::from_str(&payload) { -        Ok(serde_json::Value::Array(v)) => { -            for item in v.into_iter() { -                print_item(&item); -                println!("-----"); -            } -        } -        Ok(_) => println!("Wrong type returned, expected an array."), -        Err(e) => { -            println!("Error: {}", e); -        } -    } -} - -fn get_str(v: &serde_json::Value) -> &str { -    v.as_str().unwrap_or("") -} - -fn get_verb(item: &serde_json::Value) -> &str { -    match get_str(&item["verb"]).split("/").last() { -        Some("post") => "posted", -        Some("like") => "liked", -        Some("share") => "shared", -        Some("dislike") => "disliked", -        _ => "unknown verb", -    } -} - -fn get_object_type(item: &serde_json::Value) -> &str { -    get_str(&item["object_type"]) -        .split("/") -        .last() -        .unwrap_or("unknown object") -} - -fn get_tags(item: &serde_json::Value) -> String { -    match item["tags"] { -        serde_json::Value::Array(ref v) => v -            .iter() -            .map(|t| { -                let prefix = match get_str(&t["type"]) { -                    "hashtag" => "#", -                    "forum" => "!", -                    "mention" => "@", -                    _ => "", -                }; -                format!("{}{}", prefix, get_str(&t["tag"])) -            }) -            .collect::<Vec<_>>() -            .join(", "), -        serde_json::Value::Null => String::new(), -        _ => String::from("invalid tags, expected array..."), -    } -} - -fn print_item(item: &serde_json::Value) { -    let author = &item["author"]; -    print!("{} ", get_str(&item["created"])); -    print!("{} ", get_str(&author["name"])); -    println!("{} a {}", get_verb(&item), get_object_type(&item)); -    println!("URL:   {}", get_str(&author["url"])); -    println!("Proto: {}", get_str(&author["network"])); -    println!("Title: {}", get_str(&item["title"])); -    println!("Tags : {}", get_tags(&item)); -    println!("Message:\n{}", get_str(&item["body"])); -} diff --git a/examples/zot/xchan.rs b/examples/zot/xchan.rs deleted file mode 100644 index 088d49c..0000000 --- a/examples/zot/xchan.rs +++ /dev/null @@ -1,41 +0,0 @@ -/* Example Zot API command line utility, part of zotapi. - * Copyright (C) 2018  <name of copyright holder> - * - * 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 zotapi; - -pub enum Type { -    Addr, -    Hash, -    GUID, -} - -pub fn fetch(client: &zotapi::Client, _raw: bool, t: Type, id: &str) { -    let res = match t { -        Type::Addr => zotapi::XChan::z().by_address(&id).fetch(&client), -        Type::Hash => zotapi::XChan::z().by_hash(&id).fetch(&client), -        Type::GUID => zotapi::XChan::z().by_guid(&id).fetch(&client), -    }; - -    match res { -        Ok(payload) => { -            println!("{:?}", payload); -        } -        Err(e) => { -            println!("{:?}", e); -        } -    } -} 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()); -        } -    } -}  | 
