1use std::sync::Arc;
2
3use agent::AgentClient;
4use expressions::ExpressionsClient;
5use languages::LanguagesClient;
6use neighbourhoods::NeighbourhoodsClient;
7use perspectives::PerspectivesClient;
8use runtime::RuntimeClient;
9
10extern crate anyhow;
11extern crate async_tungstenite;
12extern crate chrono;
13extern crate clap;
14extern crate dirs;
15extern crate graphql_client;
16extern crate maplit;
17extern crate rand;
18extern crate regex;
19extern crate reqwest;
20extern crate rustyline;
21extern crate tokio;
22
23pub mod agent;
24pub mod expressions;
25pub mod languages;
26pub mod literal;
27pub mod neighbourhoods;
28pub mod perspective_proxy;
29pub mod perspectives;
30pub mod runtime;
31pub mod subject_proxy;
32pub mod types;
33mod util;
34
35pub struct Ad4mClient {
36 pub agent: AgentClient,
37 pub languages: LanguagesClient,
38 pub neighbourhoods: NeighbourhoodsClient,
39 pub perspectives: PerspectivesClient,
40 pub expressions: ExpressionsClient,
41 pub runtime: RuntimeClient,
42}
43
44pub struct ClientInfo {
45 pub executor_url: String,
46 pub cap_token: String,
47}
48
49impl Ad4mClient {
50 pub fn new(executor_url: String, cap_token: String) -> Self {
51 let info = Arc::new(ClientInfo {
52 executor_url,
53 cap_token,
54 });
55
56 Self {
57 agent: AgentClient::new(info.clone()),
58 languages: LanguagesClient::new(info.clone()),
59 neighbourhoods: NeighbourhoodsClient::new(info.clone()),
60 perspectives: PerspectivesClient::new(info.clone()),
61 expressions: ExpressionsClient::new(info.clone()),
62 runtime: RuntimeClient::new(info),
63 }
64 }
65}