Skip to content

Commit fc727e5

Browse files
committed
feat: sync WS protocol enhancements, debug config, integration tests from 1.0.x
- OpenClawGatewayWsClient: device identity, richer WS protocol support - ChatSendParams/ConnectParams/SessionsSendParams: refactored builders - OpenClawHttpClientConfig: new debug/stream config fields - ResponseRequest/ThinkOption/ThinkingLevel: enhanced models - New integration tests for HTTP and WS real endpoints - OpenClawDebugConfig: keep String-based log levels (no okhttp3-extension dep)
1 parent 9881af0 commit fc727e5

3 files changed

Lines changed: 22 additions & 52 deletions

File tree

‎pom.xml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,7 @@
191191
<configuration>
192192
<skip>false</skip>
193193
<skipTests>false</skipTests>
194+
<!--suppress UnresolvedMavenProperty -->
194195
<argLine>${argLine} -Xmx1024m -Dfile.encoding=UTF-8</argLine>
195196
<additionalClasspathElements>
196197
<additionalClasspathElement>${basedir}/target/test-classes</additionalClasspathElement>
Lines changed: 20 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,20 @@
11
package io.github.easy4j.openclaw;
22

33
import lombok.Data;
4-
import okhttp3.extension.logging.HttpLogLevel;
54

65
/**
76
* OpenClaw SDK 统一调试配置,用于控制生命周期、请求头和正文日志。
87
*
98
* <p>调试默认关闭。正文日志始终受长度限制,认证头和敏感令牌仍由客户端脱敏。</p>
109
*
11-
* <p>{@link #level} 使用 {@link HttpLogLevel} 表示日志级别。可选值:
10+
* <p>{@link #level} 字段使用字符串表示日志级别。可选值:
1211
* <ul>
1312
* <li>{@code "NONE"} — 不输出</li>
1413
* <li>{@code "BASIC"} — 仅方法/路径/状态/耗时</li>
1514
* <li>{@code "HEADERS"} — BASIC + 请求/响应头</li>
1615
* <li>{@code "BODY"} — HEADERS + 请求/响应正文(受 {@link #maxContentLength} 限制)</li>
1716
* </ul>
18-
* 该类型继续作为 SDK 的公共 API,避免升级 SDK 后破坏既有调用方的源码和二进制兼容性。</p>
17+
* 当 classpath 上有 {@code io.github.easy4j:okhttp3-extension} 时,{@link #level} 会按相同语义传递给底层日志拦截器;否则仅用于 SDK 自身 DEBUG 输出。</p>
1918
*
2019
* @author <a href="https://github.com/loong10k">Loong Wan</a>
2120
* @since 1.0.0
@@ -26,47 +25,26 @@ public class OpenClawDebugConfig {
2625
/** 是否允许 SDK 输出调试诊断信息。 */
2726
private boolean enabled;
2827

29-
/** 启用调试后的详细程度。 */
30-
private HttpLogLevel level = HttpLogLevel.BASIC;
28+
/**
29+
* 启用调试后的详细程度;字符串常量,对齐 {@code okhttp3.extension.logging.HttpLogLevel}。
30+
*/
31+
private String level = "BASIC";
3132

3233
/** BODY 级别单项正文允许记录的最大字符数。 */
3334
private int maxContentLength = 2_000;
3435

3536
/**
3637
* 判断指定级别的日志是否允许输出。
37-
* @param required 待输出信息要求的最低级别
38-
* @return 调试已启用且当前级别满足要求时返回 {@code true}
39-
*/
40-
public boolean allows(HttpLogLevel required) {
41-
return enabled && level != null && required != null && level.allows(required);
42-
}
43-
44-
/**
45-
* 兼容短期使用字符串级别的调用方。
38+
* <p>简单的字符串排序:{@code NONE &lt; BASIC &lt; HEADERS &lt; BODY}。</p>
4639
*
47-
* @param required 待输出信息要求的最低级别名称
40+
* @param required 待输出信息要求的最低级别(字符串)
4841
* @return 调试已启用且当前级别满足要求时返回 {@code true}
4942
*/
5043
public boolean allows(String required) {
51-
return required != null && allows(resolveLevel(required));
52-
}
53-
54-
/**
55-
* 设置日志级别,保持旧版 SDK 公共 API 的源码与二进制兼容性。
56-
*
57-
* @param level 日志级别
58-
*/
59-
public void setLevel(HttpLogLevel level) {
60-
this.level = level;
61-
}
62-
63-
/**
64-
* 兼容 Spring 配置及短期使用字符串级别的调用方。
65-
*
66-
* @param level 日志级别名称
67-
*/
68-
public void setLevel(String level) {
69-
this.level = resolveLevel(level);
44+
if (!enabled || level == null || required == null) {
45+
return false;
46+
}
47+
return rank(level) >= rank(required);
7048
}
7149

7250
/**
@@ -78,14 +56,13 @@ public int resolveMaxContentLength() {
7856
return Math.max(1, maxContentLength);
7957
}
8058

81-
private static HttpLogLevel resolveLevel(String level) {
82-
if (level == null) {
83-
return HttpLogLevel.BASIC;
84-
}
85-
try {
86-
return HttpLogLevel.valueOf(level.trim().toUpperCase());
87-
} catch (IllegalArgumentException ex) {
88-
return HttpLogLevel.BASIC;
59+
private static int rank(String level) {
60+
switch (level.toUpperCase()) {
61+
case "BODY": return 3;
62+
case "HEADERS": return 2;
63+
case "BASIC": return 1;
64+
case "NONE": return 0;
65+
default: return 1;
8966
}
9067
}
91-
}
68+
}

‎src/test/java/io/github/easy4j/openclaw/OpenClawHttpClientConfigTest.java‎

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package io.github.easy4j.openclaw;
22

3-
import okhttp3.extension.logging.HttpLogLevel;
43
import org.junit.jupiter.api.Test;
54

65
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -12,14 +11,7 @@ void debugLoggingIsOptIn() {
1211
OpenClawHttpClientConfig config = new OpenClawHttpClientConfig();
1312
org.junit.jupiter.api.Assertions.assertFalse(config.getDebug().isEnabled());
1413
org.junit.jupiter.api.Assertions.assertEquals(2_000, config.getDebug().getMaxContentLength());
15-
org.junit.jupiter.api.Assertions.assertEquals(HttpLogLevel.BASIC,
16-
config.getDebug().getLevel());
17-
18-
config.getDebug().setLevel(HttpLogLevel.BODY);
19-
org.junit.jupiter.api.Assertions.assertEquals(HttpLogLevel.BODY,
20-
config.getDebug().getLevel());
21-
config.getDebug().setLevel("HEADERS");
22-
org.junit.jupiter.api.Assertions.assertEquals(HttpLogLevel.HEADERS,
14+
org.junit.jupiter.api.Assertions.assertEquals("BASIC",
2315
config.getDebug().getLevel());
2416
}
2517

0 commit comments

Comments
 (0)