extern crate reqwest;
use std::collections::HashMap;
#[derive(Debug, Deserialize)]
#[allow(non_snake_case)]
pub struct Container {
pub Id: String,
pub Image: String,
pub Status: String,
pub Command: String,
pub Created: u64,
pub Names: Vec<String>,
pub Ports: Vec<Port>,
pub SizeRw: Option<u64>, pub SizeRootFs: Option<u64>,
pub Labels: Option<HashMap<String, String>>,
pub HostConfig: HostConfig
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[allow(non_snake_case)]
pub struct Port {
pub IP: Option<String>,
pub PrivatePort: u64,
pub PublicPort: Option<u64>,
pub Type: String
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[allow(non_snake_case)]
pub struct HostConfig {
pub NetworkMode: String
}
pub fn status() -> Vec<Container>{
let container: Vec<Container> = get_status_json().unwrap();
container
}
fn get_status_json() -> Result<Vec<Container>, reqwest::Error> {
let mut response = get_status_response().unwrap();
match response.json() {
Ok(v) => Ok(v),
Err(e) => panic!("Error parsing json: {:?}", e),
}
}
fn get_status_response() -> Result<reqwest::Response, reqwest::Error> {
let response = reqwest::get("http://localhost:2376/v1.38/containers/json");
match response {
Ok(v) => Ok(v),
Err(e) => panic!("Error parsing response: {:?}", e),
}
}