0.30.2

(fix): 修复带查询参数的字节端点的动态代码片段生成, 使用请求结构体而非位置参数。

0.30.1

(fix): 为带查询参数的字节(八位流)端点生成请求结构体, 用单个结构体替换位置参数,该结构体使用构建器模式 捆绑原始正文和所有查询参数。

0.30.0

(feat): 全面改进 WebSocket 重连:带抖动的指数退避算法,稳定连接 5 秒后 自动重置重试计数器,以及重连期间的消息队列(文本和二进制消息 被缓冲并在重连后刷新,而非报错)。

(feat):WebSocketMessage::Close 中添加 DisconnectInfo 结构体,暴露服务器的 关闭代码和原因字符串。recv() 现在在关闭帧时返回 None 以 发送流结束信号。

(feat): 为带查询参数的 WebSocket 通道生成类型化的 ConnectOptions 结构体, 用支持 ..Default::default() 人机工学的 #[derive(Default)] 结构体 替换位置 &str 参数。底层使用 QueryBuilder,匹配 HTTP 端点模式。

(feat): 支持从 IR 自定义连接和消息方法名称 (channel.connectMethodNamemsg.methodName),分别回退到 connectsend_{name}

(feat): 添加 generateWebSocketClients 配置别名,与 enableWebsockets 并存, 匹配 TypeScript/Python/Java 生成器配置键。

(feat): 在多 URL API 中将每个 WebSocket 连接器路由到正确的环境 URL 方法 (例如,Deepgram 的 wss://agent.deepgram.comwss://api.deepgram.com)。

(feat): 在生成的 ServerMessage 枚举中添加 Unknown(serde_json::Value) 兜底变量, 用于向前兼容新的服务器消息类型。

(feat): 优雅的 WebSocket 关闭:发送关闭帧并等待最多 5 秒的 服务器响应,带双重关闭保护。

(fix): 将隐式认证参数从必需的 &str 更改为 Option<&str>, 仅在提供令牌时有条件地注入 Authorization 标头。

(fix): 修复带显式 Authorization 标头的 API(例如 Deepgram)的连接器认证转发 — 连接器现在正确解包 Option 以匹配客户端的 &str 参数类型。

(fix): 修复仅 JSON 通道上的 recv() 在遇到意外二进制帧时返回带帧大小的错误, 而不是静默跳过它们。

(chore): 从通道路径而非通道 ID 派生通道名称,将版本段移动到后缀位置 (例如,/v1/agent/converseAgentConverseV1Client)。

(fix):ServerMessage 枚举上用自定义的 Deserialize 实现替换 #[serde(untagged)] 派生, 使用往返评分。修复结构体字段上的 #[serde(default)] 导致 每个变量都匹配、总是返回第一个的静默不匹配问题。

(chore): 引入 ReconnectContext 结构体来组织重连状态, 在 read_looptry_reconnect 中替换 8 个单独的 Arc 包装参数。

(fix): 修复 try_reconnect 以指数退避重试至 max_reconnect_attempts, 而非在单次失败尝试后放弃。

(fix): 修复 flush_queues 在发送失败时通过发送前克隆并在错误时 推回队列前端来保留消息。

(chore): 从 WebSocket 客户端基础设施中移除无用的 parse_websocket_message 函数和 未使用的 serde::de::DeserializeOwned 导入。

(fix): 修复线路测试生成器为多 URL API 设置 config.environment = None, 使请求路由到 WireMock 服务器而非真实 API 端点。

(fix): 修复 number_serializers 单元测试断言使用 1e+20 匹配 Rust 的 serde_json 指数格式化。

(fix): 修复 WebSocket 连接器以支持 api_key 认证和 bearer 令牌。连接器现在从根客户端接收预计算的 Authorization 标头值, 使用 IR 的 api 键前缀(例如 Token),api_key 优先于 token,匹配 HTTP 客户端行为。

What’s new

  • 对于之前将查询参数作为位置参数传递给 connect() 的代码,这是一个破坏性变更。

0.29.0

(feat): 为多 URL 环境添加每个端点的 URL 解析。每个端点 现在在调用时从环境对象解析其基础 URL,匹配 Python 和 Java SDK 方法。

(feat): 从代码而非静态模板生成 ApiClientBuilder,为多 URL API 启用 环境感知的构建器方法。

(feat): 为多 URL 环境在 Environment 枚举上添加每个基础 URL 的获取器方法 (例如,api_url()agent_url())。

(feat): 为多 URL 环境在 ClientConfig 中添加 Option<Environment> 字段, 以支持每个端点的 URL 解析。

(feat):HttpClient 中添加 base_url()config()execute_request_with_base_url()execute_stream_request_with_base_url() 访问器,用于 多 URL 端点解析。

(chore):RootClientGenerator 中移除构造时 URL 覆盖;所有 子客户端现在统一接收 config.clone()

0.28.0

(feat): 添加 number_serializers 模块,将整数 f64 值序列化为 不带尾随 .0 的格式(例如,24000.0 序列化为 24000)。某些 API 拒绝整数值的小数表示。包含范围验证以防止 i64 范围外数字的错误值。

(feat): 为带 application/octet-stream 请求正文的端点添加 execute_bytes_request HTTP 客户端方法,发送原始字节而非 JSON 编码。

(feat): 支持来自 IR 认证方案的 API 键前缀。当配置了 TokenBearer 等前缀时,生成的 HTTP 客户端会将其 添加到 API 键标头值前。

(fix): 重构文件上传和内联请求正文上的查询参数,作为 URL 查询字符串发送 而非序列化到请求正文中。查询参数字段现在标记为 #[serde(skip_serializing)]

(fix): 修复可选查询参数字段上冗余的 #[serde(skip_serializing_if = "Option::is_none")]#[serde(skip_serializing)]。现在仅发出 skip_serializing

(chore): 仅在 IR 使用浮点/双精度类型时有条件地包含 number_serializers.rs, 与其他序列化器模块保持一致。

(chore): 在认证方案上用适当的 FernIr.AuthScheme._visit() 模式匹配 替换不安全的类型转换。

(chore): 将 IR SDK 从 v61 升级到 v65。