darksky 0.8.1

An unofficial Rust wrapper for the darksky.net API.
Documentation
#![allow(unreachable_code)]
#![cfg(feature = "hyper")]

extern crate darksky;
extern crate futures;
extern crate hyper;
extern crate hyper_tls;
extern crate tokio_core;

use darksky::*;
use futures::{Future, future};
use hyper::client::HttpConnector;
use hyper::{Body, Client};
use hyper_tls::HttpsConnector;
use std::time::Duration;
use std::{env, thread};
use tokio_core::reactor::{Core, Handle};

#[inline]
fn client(handle: &Handle) -> Client<HttpsConnector<HttpConnector>, Body> {
	Client::configure()
		.connector(HttpsConnector::new(4, handle).unwrap())
		.build(handle)
}

#[ignore]
#[test]
fn test_get_forecast() {
	let token = env::var("FORECAST_TOKEN").expect("forecast token");

	let mut core = Core::new().unwrap();
	let client = client(&core.handle());

	let futures = vec![
		client.get_forecast(&token[..], 37.8267, -122.423),
		client.get_forecast(&token[..], 39.9042, 166.4074),
		client.get_forecast(&token[..], 19.2465, -99.1013)
	];

	let done = future::join_all(futures)
		.and_then(|_| {
			assert!(true);

			Ok(())
		}).or_else(|_| {
			assert!(false);

			Err(())
		});

	core.run(done).expect("core err");
}

#[ignore]
#[test]
fn test_get_forecast_with_options() {
	let token = env::var("FORECAST_TOKEN").expect("forecast token");

	let mut core = Core::new().unwrap();
	let client = client(&core.handle());

	let done = client.get_forecast_with_options(&token[..], 19.2465, -99.1013, |opt| {
		opt.exclude(vec![Block::Currently, Block::Daily])
		   .extend_hourly()
		   .language(Language::Es)
		   .unit(Unit::Si)
	}).and_then(|_| {
		assert!(true);

		Ok(())
	}).or_else(|_| {
		assert!(false);

		Err(())
	});

	core.run(done).expect("core err");
}

#[ignore]
#[test]
fn test_time_machine() {
	let token = env::var("FORECAST_TOKEN").expect("forecast token");

	let mut core = Core::new().unwrap();
	let client = client(&core.handle());

	let done = client.get_forecast_time_machine(
		&token[..],
		19.2465,
		-99.1013,
		1_450_000_000,
		|opt| opt
			.exclude(vec![Block::Currently, Block::Daily])
			.extend_hourly()
			.language(Language::Es)
			.unit(Unit::Si))
		.map(|forecast| {
			assert!(true);

			()
		}).map_err(|why| {
			panic!("{:?}", why);

			()
		});

	core.run(done).expect("core err");
}