#![allow(missing_docs, unused_variables, trivial_casts)]
use clap::{App, Arg};
#[allow(unused_imports)]
use ecli_server_codegen::{
models, Api, ApiNoContext, Client, ContextWrapperExt, GetTaskListResponse,
GetTaskLogByIdResponse, PauseTaskByIdResponse, ResumeTaskByIdResponse, StartTaskResponse,
StopTaskByIdResponse,
};
#[allow(unused_imports)]
use futures::{future, stream, Stream};
#[allow(unused_imports)]
use log::info;
#[allow(unused_imports)]
use swagger::{AuthData, ContextBuilder, EmptyContext, Has, Push, XSpanIdString};
type ClientContext = swagger::make_context_ty!(
ContextBuilder,
EmptyContext,
Option<AuthData>,
XSpanIdString
);
#[allow(unused_mut)]
fn main() {
env_logger::init();
let matches = App::new("client")
.arg(
Arg::with_name("operation")
.help("Sets the operation to run")
.possible_values(&["GetTaskList"])
.required(true)
.index(1),
)
.arg(
Arg::with_name("https")
.long("https")
.help("Whether to use HTTPS or not"),
)
.arg(
Arg::with_name("host")
.long("host")
.takes_value(true)
.default_value("localhost")
.help("Hostname to contact"),
)
.arg(
Arg::with_name("port")
.long("port")
.takes_value(true)
.default_value("8527")
.help("Port to contact"),
)
.get_matches();
let is_https = matches.is_present("https");
let base_url = format!(
"{}://{}:{}",
if is_https { "https" } else { "http" },
matches.value_of("host").unwrap(),
matches.value_of("port").unwrap()
);
let context: ClientContext = swagger::make_context!(
ContextBuilder,
EmptyContext,
None as Option<AuthData>,
XSpanIdString::default()
);
let mut client: Box<dyn ApiNoContext<ClientContext>> = if matches.is_present("https") {
let client =
Box::new(Client::try_new_https(&base_url).expect("Failed to create HTTPS client"));
Box::new(client.with_context(context))
} else {
let client =
Box::new(Client::try_new_http(&base_url).expect("Failed to create HTTP client"));
Box::new(client.with_context(context))
};
let mut rt = tokio::runtime::Runtime::new().unwrap();
match matches.value_of("operation") {
Some("GetTaskList") => {
let result = rt.block_on(client.get_task_list());
info!(
"{:?} (X-Span-ID: {:?})",
result,
(client.context() as &dyn Has<XSpanIdString>).get().clone()
);
}
_ => {
panic!("Invalid operation provided")
}
}
}