hipchat-client 0.5.0

An API client library for HipChat
Documentation
extern crate hipchat_client;
extern crate hyper;
#[macro_use]
extern crate serde_derive;

extern crate serde;
extern crate serde_json;
use std::io::prelude::*;
use std::fs::File;
use hipchat_client::Client as HipchatClient;

#[derive(Deserialize)]
struct Config {
    token: String,
    origin: String,
    room: String,
    user: u64
}

fn setup() -> (HipchatClient, Config) {
    let contents = &mut String::new();
    File::open("./settings.json")
        .unwrap_or_else(|e| panic!("{}", e))
        .read_to_string(contents)
        .unwrap_or_else(|e| panic!("{}", e));
    let config: Config = serde_json::from_str(contents)
        .unwrap_or_else(|e| panic!("{}", e));
    (HipchatClient::new(config.origin.clone(), config.token.clone()), config)
}

#[test]
fn integration_get_room() {
    let (client, config) = setup();
    let room = client.get_room(&config.room).unwrap();
    println!("room: {:#?}", room);
    assert_eq!(room.name, config.room);
}

#[test]
fn integration_get_rooms() {
    let (client, config) = setup();
    let rooms = client.get_rooms(None).unwrap();
    println!("rooms: {:#?}", rooms);
    assert!(rooms.items.iter().any(|r| r.name == config.room));
}

#[test]
fn integration_get_user() {
    let (client, config) = setup();
    let user = client.get_user(&config.user.to_string()).unwrap();
    println!("user: {:#?}", user);
    assert_eq!(user.id, config.user);
}

#[test]
fn integration_get_users() {
    let (client, _) = setup();
    let users = client.get_users(None).unwrap();
    println!("users: {:#?}", users);
}

#[test]
fn integration_get_private_messages() {
    let (client, config) = setup();
    let messages = client.get_private_messages(&config.user.to_string(), None).unwrap();
    println!("messages: {:#?}", messages);
}

#[test]
fn integration_get_recent_history() {
    let (client, config) = setup();
    let messages = client.get_recent_history(&config.room).unwrap();
    println!("messages: {:#?}", messages);
}