| 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 | ¶ms[0] |
| 1297 | .as_str() |
| 1298 | .log_warn(std::module_path!(), || { |
| 1299 | "Error while deserializing Event..." |
| 1300 | }) |
| 1301 | .unwrap_or(""), |
| 1302 | ) { |