2019-12-28 21:43:13 -06:00
|
|
|
extern crate serde;
|
|
|
|
extern crate serde_derive;
|
|
|
|
extern crate serde_json;
|
|
|
|
|
|
|
|
use std::fs::File;
|
|
|
|
use std::io::{BufReader, Read};
|
|
|
|
use std::path::Path;
|
|
|
|
|
2019-12-29 19:58:49 -06:00
|
|
|
use reqwest::Client;
|
|
|
|
use select::document::Document;
|
|
|
|
use select::predicate::Name;
|
2019-12-28 21:43:13 -06:00
|
|
|
use serde::Deserialize;
|
|
|
|
use serde_json::Result;
|
|
|
|
|
|
|
|
// config structure
|
|
|
|
#[derive(Deserialize, Debug)]
|
|
|
|
pub struct Configuration {
|
|
|
|
pub ipaddr: String,
|
|
|
|
pub port: i32,
|
|
|
|
pub tv: String,
|
|
|
|
pub active_app: String,
|
|
|
|
}
|
|
|
|
|
2019-12-29 19:58:49 -06:00
|
|
|
impl Configuration {
|
|
|
|
pub fn is_change_app(&self) -> bool {
|
|
|
|
true
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn change_active_app(&mut self) {
|
|
|
|
// stuff happens here
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-12-28 21:43:13 -06:00
|
|
|
// grab the config
|
|
|
|
pub fn init_config() -> Configuration {
|
|
|
|
let mut file = File::open(&Path::new("config.json")).expect("Couldn't grab JSON!");
|
|
|
|
let mut data = String::new();
|
2019-12-29 19:58:49 -06:00
|
|
|
file.read_to_string(&mut data).expect("Couldn't read file!");
|
2019-12-28 21:43:13 -06:00
|
|
|
|
|
|
|
let config: Configuration = serde_json::from_str(&data).expect("Couldn't parse JSON!");
|
|
|
|
|
|
|
|
config
|
|
|
|
}
|
2019-12-29 19:58:49 -06:00
|
|
|
|
|
|
|
pub fn get_tv_status(configuration: &Configuration) -> String {
|
|
|
|
let request = format!(
|
|
|
|
"http://{ipaddr}:{port}/query/active-app",
|
|
|
|
ipaddr = configuration.ipaddr,
|
|
|
|
port = configuration.port
|
|
|
|
);
|
|
|
|
let response = reqwest::get(&request).unwrap();
|
|
|
|
//println!("{}", response.status());
|
|
|
|
let document = Document::from_read(response).unwrap();
|
|
|
|
let next = document.find(Name("app")).next().unwrap();
|
|
|
|
|
|
|
|
next.text().to_string()
|
|
|
|
}
|