ytr 0.1.2

Yandex.Translate API wrapper for Rust
Documentation
extern crate ytr;
use ytr::ApiClient;
use ytr::Error;

use std::fs;


fn valid_client() -> ApiClient {
    let key = fs::read_to_string(".testkey")
        .expect("need '.testkey' file with API key to run integration tests");

    ApiClient::new(key)
}

#[test]
#[ignore]
fn test_translate() {
    let api = valid_client();
    let res = api
        .translate("Hi!", "ru")
        .options(1)
        .get()
        .unwrap();
    assert_eq!("Привет!", res.text);
    assert_eq!("en-ru", res.lang);
    assert_eq!("en", res.detected.unwrap());
}

#[test]
#[ignore]
fn test_detect() {
    let api = valid_client();
    let res = api
        .detect("Hello world!")
        .hint(&["es"])
        .get()
        .unwrap();
    assert_eq!("en", res.lang);
}

#[test]
#[ignore]
fn test_langs() {
    let api = valid_client();
    let res = api
        .get_langs()
        .ui("en")
        .get()
        .unwrap();
    assert_eq!("Russian", res.langs.unwrap().get("ru").unwrap());
}

#[test]
#[ignore]
fn test_with_invalid_key() -> Result<(), String> {
    let api = ApiClient::new("invalid.token".to_string());
    let res = api.get_langs().get();
    match res {
        Ok(_) => Err("request succeeded with invalid API key".into()),
        Err(err) => match err {
            Error::ApiError(_) => Ok(()),
            _ => Err(format!("expected Error::ApiError, got {:?}", err))
        }
    }
}