Codex Handbook
tui/src/status/remote_connection.rs 86 lines
use crate::AppServerTarget;use crate::RemoteAppServerEndpoint;use url::Url;#[derive(Clone, Debug, PartialEq, Eq)]pub(crate) struct RemoteConnectionStatus {    pub(crate) address: String,    pub(crate) version: String,}pub(crate) fn remote_connection_status_value(    app_server_target: &AppServerTarget,    server_version: Option<&str>,) -> Option<RemoteConnectionStatus> {    let endpoint = match app_server_target {        AppServerTarget::Embedded => return None,        AppServerTarget::LocalDaemon { endpoint } | AppServerTarget::Remote { endpoint } => {            endpoint        }    };    let address = match endpoint {        RemoteAppServerEndpoint::WebSocket { websocket_url, .. } => {            sanitized_websocket_display_address(websocket_url)                .unwrap_or_else(|| "<invalid websocket URL>".to_string())        }        RemoteAppServerEndpoint::UnixSocket { socket_path } => {            format!("unix://{}", socket_path.display())        }    };    let version = server_version        .map(|version| format!("v{version}"))        .unwrap_or_else(|| "unknown".to_string());    Some(RemoteConnectionStatus { address, version })}fn sanitized_websocket_display_address(raw: &str) -> Option<String> {    let mut url = Url::parse(raw).ok()?;    let _ = url.set_username("");    let _ = url.set_password(None);    url.set_query(None);    url.set_fragment(None);    Some(url.to_string())}#[cfg(test)]mod tests {    use super::*;    use codex_utils_absolute_path::AbsolutePathBuf;    #[test]    fn remote_connection_status_value_formats_display_value() -> color_eyre::Result<()> {        assert_eq!(            remote_connection_status_value(&AppServerTarget::Embedded, Some("1.2.3")),            None        );        let websocket_target = AppServerTarget::Remote {            endpoint: RemoteAppServerEndpoint::WebSocket {                websocket_url: "ws://user:secret@127.0.0.1:4500/?token=abc#frag".to_string(),                auth_token: Some("abc".to_string()),            },        };        assert_eq!(            remote_connection_status_value(&websocket_target, Some("1.2.3")),            Some(RemoteConnectionStatus {                address: "ws://127.0.0.1:4500/".to_string(),                version: "v1.2.3".to_string(),            })        );        let socket_path = AbsolutePathBuf::relative_to_current_dir("codex.sock")?;        let daemon_target = AppServerTarget::LocalDaemon {            endpoint: RemoteAppServerEndpoint::UnixSocket {                socket_path: socket_path.clone(),            },        };        assert_eq!(            remote_connection_status_value(&daemon_target, /*server_version*/ None),            Some(RemoteConnectionStatus {                address: format!("unix://{}", socket_path.display()),                version: "unknown".to_string(),            })        );        Ok(())    }}