Skip to content

Commit 66d5080

Browse files
committed
chore: Gzip decompression when necessary #3
1 parent df84405 commit 66d5080

File tree

2 files changed

+27
-6
lines changed

2 files changed

+27
-6
lines changed

internal/fn/gunzip.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package fn
2+
3+
import (
4+
"compress/gzip"
5+
"io"
6+
)
7+
8+
func Gunzip(r io.Reader) (reader io.ReadCloser, err error) {
9+
reader, err = gzip.NewReader(r)
10+
if err != nil {
11+
return nil, err
12+
}
13+
defer reader.Close()
14+
return reader, nil
15+
}

models/gemini/proxy.go

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ func parseResponseBody(responseBody io.ReadCloser) (GeminiResponse, error) {
5757
return payload, err
5858
}
5959

60-
fmt.Println(string(body))
6160
err = json.Unmarshal(body, &payload)
6261
if err != nil {
6362
return payload, err
@@ -162,8 +161,6 @@ func Proxy(c *gin.Context, requestConverter RequestConverter) {
162161
openaiPayload.Model = config.Model
163162
}
164163

165-
fmt.Println(openaiPayload)
166-
167164
proxy := &httputil.ReverseProxy{Director: getDirector(c.Request, body, c, requestConverter, openaiPayload, model)}
168165
transport, err := network.NewProxyFromEnv(
169166
fn.GetStringOrDefaultFromEnv("ENV_GEMINI_SOCKS_PROXY", ""),
@@ -180,8 +177,18 @@ func Proxy(c *gin.Context, requestConverter RequestConverter) {
180177
proxy.ModifyResponse = func(response *http.Response) error {
181178
if response.StatusCode == http.StatusOK {
182179

183-
responsePayload, err := parseResponseBody(response.Body)
184-
defer response.Body.Close()
180+
var reader io.ReadCloser
181+
if strings.ToLower(response.Header.Get("Content-Encoding")) == "gzip" {
182+
reader, err = fn.Gunzip(response.Body)
183+
if err != nil {
184+
return err
185+
}
186+
} else {
187+
reader = response.Body
188+
}
189+
190+
responsePayload, err := parseResponseBody(reader)
191+
defer reader.Close()
185192
if err != nil {
186193
return err
187194
}
@@ -205,7 +212,6 @@ func Proxy(c *gin.Context, requestConverter RequestConverter) {
205212
}
206213

207214
completionTokens := 0
208-
fmt.Println(responsePayload)
209215
for _, candidates := range responsePayload.Candidates {
210216
for _, part := range candidates.Content.Parts {
211217
openaiMessage.Role = candidates.Content.Role

0 commit comments

Comments
 (0)