diff options
| author | Harald Eilertsen <haraldei@anduin.net> | 2018-09-24 17:38:37 +0200 | 
|---|---|---|
| committer | Harald Eilertsen <haraldei@anduin.net> | 2018-09-24 17:39:59 +0200 | 
| commit | b82d94f7cde2a99bc6538fb5af08da08472b6640 (patch) | |
| tree | 40951fc9ccb51ae333b1cb27195edc3ed2574fc9 /examples | |
| parent | c943e530d50452b23c8148a113574ec85e9207b3 (diff) | |
| download | rust-zotapi-b82d94f7cde2a99bc6538fb5af08da08472b6640.tar.gz rust-zotapi-b82d94f7cde2a99bc6538fb5af08da08472b6640.tar.bz2 rust-zotapi-b82d94f7cde2a99bc6538fb5af08da08472b6640.zip  | |
Add new "master" example, to contain all examples as subcommands.
Only implements fetching the channel-stream for now.
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/channel_stream.rs | 52 | ||||
| -rw-r--r-- | examples/zot.rs | 54 | 
2 files changed, 106 insertions, 0 deletions
diff --git a/examples/channel_stream.rs b/examples/channel_stream.rs new file mode 100644 index 0000000..4e77d1c --- /dev/null +++ b/examples/channel_stream.rs @@ -0,0 +1,52 @@ +/* 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; + +pub fn fetch(client: &zotapi::Client, raw: bool) { +    match client.channel_stream() { +        Ok(payload) => { +            if raw { +                println!("{}", payload); +            } +            else { +                print(&payload); +            } +        }, +        Err(e) => { +            println!("Error getting channel stream: {:?}", e); +        } +    } +} + +fn print(payload: &str) { +    match serde_json::from_str(&payload) { +        Ok(serde_json::Value::Array(v)) => { +            for item in v.into_iter() { +                println!("{} {} {}", item["title"], item["type"], item["author"]["name"]); +            } +        }, +        Ok(_) => { +            println!("Wrong type returned, expected an array.") +        }, +        Err(e) => { +            println!("Error: {}", e); +        } +    } +} diff --git a/examples/zot.rs b/examples/zot.rs new file mode 100644 index 0000000..a0d930e --- /dev/null +++ b/examples/zot.rs @@ -0,0 +1,54 @@ +/* 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/>. + */ + +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 channel_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"))) +        .get_matches(); + +    match matches.subcommand() { +        ("channel-stream", Some(m)) => { +            let raw = m.is_present("raw"); +            channel_stream::fetch(&zotapi::client(&site, &user, &password), raw); +        }, +        _ => { +            println!("{}", matches.usage()); +        }, +    } +}  | 
