refactor: streamline ConvertCodexResponseToGeminiNonStream by removing unnecessary buffer and improving response handling

This commit is contained in:
Luis Pater
2025-10-18 16:08:30 +08:00
parent 735b21394c
commit 307ae76ed4

View File

@@ -5,7 +5,6 @@
package gemini
import (
"bufio"
"bytes"
"context"
"encoding/json"
@@ -152,22 +151,11 @@ func ConvertCodexResponseToGemini(_ context.Context, modelName string, originalR
// Returns:
// - string: A Gemini-compatible JSON response containing all message content and metadata
func ConvertCodexResponseToGeminiNonStream(_ context.Context, modelName string, originalRequestRawJSON, requestRawJSON, rawJSON []byte, _ *any) string {
scanner := bufio.NewScanner(bytes.NewReader(rawJSON))
buffer := make([]byte, 20_971_520)
scanner.Buffer(buffer, 20_971_520)
for scanner.Scan() {
line := scanner.Bytes()
// log.Debug(string(line))
if !bytes.HasPrefix(line, dataTag) {
continue
}
rawJSON = bytes.TrimSpace(rawJSON[5:])
rootResult := gjson.ParseBytes(rawJSON)
// Verify this is a response.completed event
if rootResult.Get("type").String() != "response.completed" {
continue
return ""
}
// Base Gemini response template for non-streaming
@@ -303,8 +291,6 @@ func ConvertCodexResponseToGeminiNonStream(_ context.Context, modelName string,
}
}
return template
}
return ""
}
// buildReverseMapFromGeminiOriginal builds a map[short]original from original Gemini request tools.