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 package gemini
import ( import (
"bufio"
"bytes" "bytes"
"context" "context"
"encoding/json" "encoding/json"
@@ -152,22 +151,11 @@ func ConvertCodexResponseToGemini(_ context.Context, modelName string, originalR
// Returns: // Returns:
// - string: A Gemini-compatible JSON response containing all message content and metadata // - string: A Gemini-compatible JSON response containing all message content and metadata
func ConvertCodexResponseToGeminiNonStream(_ context.Context, modelName string, originalRequestRawJSON, requestRawJSON, rawJSON []byte, _ *any) string { 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) rootResult := gjson.ParseBytes(rawJSON)
// Verify this is a response.completed event // Verify this is a response.completed event
if rootResult.Get("type").String() != "response.completed" { if rootResult.Get("type").String() != "response.completed" {
continue return ""
} }
// Base Gemini response template for non-streaming // Base Gemini response template for non-streaming
@@ -304,8 +292,6 @@ func ConvertCodexResponseToGeminiNonStream(_ context.Context, modelName string,
} }
return template return template
} }
return ""
}
// buildReverseMapFromGeminiOriginal builds a map[short]original from original Gemini request tools. // buildReverseMapFromGeminiOriginal builds a map[short]original from original Gemini request tools.
func buildReverseMapFromGeminiOriginal(original []byte) map[string]string { func buildReverseMapFromGeminiOriginal(original []byte) map[string]string {