Commit unstaged changes

This commit is contained in:
Joscha 2026-03-16 19:44:19 +01:00
parent 5672ff3d25
commit 32e4922c88
2 changed files with 21 additions and 7 deletions

View file

@ -29,8 +29,8 @@ enum ConnCommand {
/// Configuration options for a [`ClientConn`].
#[derive(Debug, Clone)]
pub struct ClientConnConfig {
/// The domain where the server is hosted.
pub domain: String,
/// The HTTP(S) url where the server is hosted.
pub url: String,
/// Whether the client should present itself as a human to the server.
///
/// This should only be set if the client is directly acting on behalf of a
@ -53,7 +53,7 @@ pub struct ClientConnConfig {
impl Default for ClientConnConfig {
fn default() -> Self {
Self {
domain: "euphoria.leet.nu".to_string(),
url: "https://euphoria.leet.nu/".to_string(),
human: false,
channel_bufsize: 10,
connect_timeout: Duration::from_secs(10),
@ -211,14 +211,24 @@ impl ClientConn {
room: &str,
cookies: Option<HeaderValue>,
config: &ClientConnConfig,
) -> Result<(Self, Vec<HeaderValue>)> {
// Prepare URL
) -> Result<(Self, Vec<HeaderValue>)> {
let human = if config.human { "?h=1" } else { "" };
let uri = format!("wss://{}/room/{room}/ws{human}", config.domain);
debug!("Connecting to {uri} with cookies: {cookies:?}");
if !(config.url.starts_with("http://") || config.url.starts_with("https://")) {
return Err(Error::InvalidUrl);
};
let prepared_url = config
.url
.strip_prefix("http")
.ok_or(Error::InvalidUrl)?
.trim_end_matches('/');
let ws_url = format!("ws{prepared_url}/room/{room}/ws{human}");
debug!("Connecting to {ws_url} with cookies: {cookies:?}");
// Prepare request
let mut request = uri.into_client_request().expect("valid request");
let mut request = ws_url.into_client_request().expect("valid request");
if let Some(cookies) = cookies {
request.headers_mut().append(header::COOKIE, cookies);
}

View file

@ -9,6 +9,9 @@ use crate::api::PacketType;
/// Possible euphoria communication errors.
#[derive(Debug)]
pub enum Error {
/// The URL has an invalid format.
InvalidUrl,
/// The connection is closed.
ConnectionClosed,
@ -54,6 +57,7 @@ pub enum Error {
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::InvalidUrl => write!(f, "url has invalid format"),
Self::ConnectionClosed => write!(f, "connection closed"),
Self::PingTimeout => write!(f, "ping timed out"),
Self::MalformedPacket(err) => write!(f, "malformed packet: {err}"),