// zotapi - Rust wrapper for the Zot API as implemented by Hubzilla // 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; extern crate serde_json; use dotenv::dotenv; use std::env; fn main() { dotenv().ok(); let site = env::var("HUB").expect("HUB variable expected"); let user = env::var("HZ_USER").expect("HZ_USER variable expected"); let password = env::var("HZ_PASSWORD").expect("HZ_PASSWORD variable expected"); let mut a = env::args(); let program = a.next().unwrap(); let client = zotapi::client(&site, &user, &password); match client.abook().fetch() { Ok(payload) => { let data: serde_json::Value = serde_json::from_str(&payload).unwrap(); match data { serde_json::Value::Array(v) => { for contact in v { println!("{} ({}, {})", contact["xchan_name"], contact["xchan_addr"], contact["xchan_network"]); } }, _ => { println!("Unexpected data:\n{}", payload); } }; }, Err(e) => { println!("{:?}", e); } } }