Skip to content

Commit 4cb727e

Browse files
committed
refactor(protocol): unify raw-node parsing after RED
1 parent 77ff135 commit 4cb727e

1 file changed

Lines changed: 51 additions & 27 deletions

File tree

‎src/main/java/io/github/easy4j/kimi/model/KimiProtocolMapper.java‎

Lines changed: 51 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,15 @@ public KimiMessage readMessage(JsonNode root) {
4747
}
4848

4949
public KimiSession readSession(String json) {
50-
JsonNode root = readObject(json, "Kimi session");
51-
Map<String, JsonNode> extensions = extensions(root, "sessionId", "session_id", "model", "mode");
52-
return new KimiSession(firstText(root, "sessionId", "session_id"),
53-
root.path("model").asText(null),
54-
root.path("mode").asText(null),
50+
return readSession(readObject(json, "Kimi session"));
51+
}
52+
53+
public KimiSession readSession(JsonNode root) {
54+
JsonNode object = requireObject(root, "Kimi session");
55+
Map<String, JsonNode> extensions = extensions(object, "sessionId", "session_id", "model", "mode");
56+
return new KimiSession(firstText(object, "sessionId", "session_id"),
57+
object.path("model").asText(null),
58+
object.path("mode").asText(null),
5559
extensions);
5660
}
5761

@@ -77,42 +81,62 @@ public KimiPromptResult readPromptResult(JsonNode root) {
7781
}
7882

7983
public KimiToolCall readToolCall(String json) {
80-
JsonNode root = readObject(json, "Kimi tool call");
81-
return new KimiToolCall(root.path("id").asText(null),
82-
root.path("name").asText(null),
83-
root.path("arguments").deepCopy(),
84-
extensions(root, "id", "name", "arguments"));
84+
return readToolCall(readObject(json, "Kimi tool call"));
85+
}
86+
87+
public KimiToolCall readToolCall(JsonNode root) {
88+
JsonNode object = requireObject(root, "Kimi tool call");
89+
return new KimiToolCall(object.path("id").asText(null),
90+
object.path("name").asText(null),
91+
object.path("arguments").deepCopy(),
92+
extensions(object, "id", "name", "arguments"));
8593
}
8694

8795
public KimiError readError(String json) {
88-
JsonNode root = readObject(json, "Kimi error");
89-
JsonNode code = root.path("code").isMissingNode() ? null : root.path("code").deepCopy();
90-
JsonNode data = root.path("data").isMissingNode() ? null : root.path("data").deepCopy();
96+
return readError(readObject(json, "Kimi error"));
97+
}
98+
99+
public KimiError readError(JsonNode root) {
100+
JsonNode object = requireObject(root, "Kimi error");
101+
JsonNode code = object.path("code").isMissingNode() ? null : object.path("code").deepCopy();
102+
JsonNode data = object.path("data").isMissingNode() ? null : object.path("data").deepCopy();
91103
return new KimiError(code,
92-
root.path("message").asText(null),
104+
object.path("message").asText(null),
93105
data,
94-
extensions(root, "code", "message", "data"));
106+
extensions(object, "code", "message", "data"));
95107
}
96108

97109
public KimiModel readModel(String json) {
98-
JsonNode root = readObject(json, "Kimi model");
99-
return new KimiModel(root.path("id").asText(null),
100-
root.path("name").asText(null),
101-
extensions(root, "id", "name"));
110+
return readModel(readObject(json, "Kimi model"));
111+
}
112+
113+
public KimiModel readModel(JsonNode root) {
114+
JsonNode object = requireObject(root, "Kimi model");
115+
return new KimiModel(object.path("id").asText(null),
116+
object.path("name").asText(null),
117+
extensions(object, "id", "name"));
102118
}
103119

104120
public KimiMode readMode(String json) {
105-
JsonNode root = readObject(json, "Kimi mode");
106-
return new KimiMode(root.path("id").asText(null),
107-
root.path("name").asText(null),
108-
extensions(root, "id", "name"));
121+
return readMode(readObject(json, "Kimi mode"));
122+
}
123+
124+
public KimiMode readMode(JsonNode root) {
125+
JsonNode object = requireObject(root, "Kimi mode");
126+
return new KimiMode(object.path("id").asText(null),
127+
object.path("name").asText(null),
128+
extensions(object, "id", "name"));
109129
}
110130

111131
public KimiProvider readProvider(String json) {
112-
JsonNode root = readObject(json, "Kimi provider");
113-
return new KimiProvider(root.path("id").asText(null),
114-
root.path("name").asText(null),
115-
extensions(root, "id", "name"));
132+
return readProvider(readObject(json, "Kimi provider"));
133+
}
134+
135+
public KimiProvider readProvider(JsonNode root) {
136+
JsonNode object = requireObject(root, "Kimi provider");
137+
return new KimiProvider(object.path("id").asText(null),
138+
object.path("name").asText(null),
139+
extensions(object, "id", "name"));
116140
}
117141

118142
private JsonNode requireObject(JsonNode root, String what) {

0 commit comments

Comments
 (0)