///|
/// 连接一台 OpenList 服务器所需的设置。
///
/// 这些值在创建客户端时被固化进 moonhttp 的默认配置:`base_url` 成为
/// 请求 URL 的前缀,`timeout` 成为默认超时;之后每个请求只给相对路径。
pub struct Settings {
  /// 服务器根地址,例如 `https://openlist.example.com`。
  /// 结尾多余的 `/` 会在创建客户端时被去掉。
  base_url : String
  /// 默认请求超时(毫秒)。`None` 表示沿用 moonhttp 的默认超时。
  timeout : Int?
}

///|
/// 创建连接设置。
///
/// ```moonbit nocheck
/// let settings = @core.Settings::new("https://openlist.example.com")
/// ```
pub fn Settings::new(base_url : String, timeout? : Int) -> Settings {
  // 结尾的 `/`(以及多余空白)在入口就归一化,客户端拿到的设置即最终值。
  {
    base_url: base_url.trim_end().to_owned().trim_end(chars="/").to_owned(),
    timeout,
  }
}