MCPcopy Create free account
hub / github.com/BigBoot/AutoKuma / connect

Method connect

kuma-client/src/client.rs:1245–1363  ·  view source on GitHub ↗
(self: &Arc<Self>)

Source from the content-addressed store, hash-verified

1243 }
1244
1245 pub async fn connect(self: &Arc<Self>) -> Result<()> {
1246 let mut tls_config = TlsConnector::builder();
1247
1248 tls_config.danger_accept_invalid_certs(!self.config.tls.verify);
1249
1250 if let Some((_, cert)) = &self.custom_cert {
1251 tls_config.add_root_certificate(cert.clone());
1252 }
1253
1254 self.is_ready.lock().await.reset();
1255 *self.is_logged_in.lock().await = false;
1256 *self.socket_io.lock().await = None;
1257
1258 let mut builder = ClientBuilder::new(
1259 self.config
1260 .url
1261 .join("socket.io/")
1262 .map_err(|e| Error::InvalidUrl(e.to_string()))?,
1263 )
1264 .tls_config(tls_config.build().map_err(|e| {
1265 Error::InvalidTlsCert(
1266 self.custom_cert
1267 .as_ref()
1268 .map(|(file, _)| file.to_owned())
1269 .unwrap_or_default(),
1270 e.to_string(),
1271 )
1272 })?)
1273 .transport_type(rust_socketio::TransportType::Websocket);
1274
1275 for (key, value) in self
1276 .config
1277 .headers
1278 .iter()
1279 .filter_map(|header| header.split_once("="))
1280 {
1281 builder = builder.opening_header(key, value);
1282 }
1283
1284 let handle = Handle::current();
1285 let self_ref = Arc::downgrade(self);
1286 let client = builder
1287 .on_any(move |event, payload, _| {
1288 let handle = handle.clone();
1289 let self_ref: Weak<Worker> = self_ref.clone();
1290 trace!("Client::on_any({:?}, {:?})", &event, &payload);
1291 async move {
1292 if let Some(arc) = self_ref.upgrade() {
1293 match (event, payload) {
1294 (SocketIOEvent::Message, Payload::Text(params)) => {
1295 if let Ok(e) = Event::from_str(
1296 &params[0]
1297 .as_str()
1298 .log_warn(std::module_path!(), || {
1299 "Error while deserializing Event..."
1300 })
1301 .unwrap_or(""),
1302 ) {

Callers

nothing calls this directly

Calls 7

resetMethod · 0.80
iterMethod · 0.80
log_errorMethod · 0.80
log_warnMethod · 0.80
on_eventMethod · 0.80
is_readyMethod · 0.80
disconnectMethod · 0.80

Tested by

no test coverage detected