Skip to content

Commit c98b380

Browse files
qiaodevcopybara-github
authored andcommitted
feat: add extras request provider to the HTTP options
FUTURE_COPYBARA_INTEGRATE_REVIEW=#345 from googleapis:release-please--branches--main 58219ea PiperOrigin-RevId: 767210413
1 parent d00f85e commit c98b380

File tree

3 files changed

+47
-0
lines changed

3 files changed

+47
-0
lines changed

api_client.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,10 @@ func buildRequest(ctx context.Context, ac *apiClient, path string, body map[stri
126126
if err != nil {
127127
return nil, err
128128
}
129+
if httpOptions.ExtrasRequestProvider != nil {
130+
body = httpOptions.ExtrasRequestProvider(body)
131+
}
132+
129133
b := new(bytes.Buffer)
130134
if len(body) > 0 {
131135
if err := json.NewEncoder(b).Encode(body); err != nil {

api_client_test.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -783,6 +783,41 @@ func TestBuildRequest(t *testing.T) {
783783
wantErr: true,
784784
expectedError: "buildRequest: error encoding body",
785785
},
786+
{
787+
name: "With ExtrasRequestProvider",
788+
clientConfig: &ClientConfig{
789+
APIKey: "test-api-key",
790+
Backend: BackendGeminiAPI,
791+
HTTPClient: &http.Client{},
792+
},
793+
path: "models/test-model:generateContent",
794+
body: map[string]any{"original_key": "original_value"},
795+
method: "POST",
796+
httpOptions: &HTTPOptions{
797+
BaseURL: "https://generativelanguage.googleapis.com",
798+
APIVersion: "v1beta",
799+
ExtrasRequestProvider: func(body map[string]any) map[string]any {
800+
body["extra_key"] = "extra_value"
801+
return body
802+
},
803+
},
804+
want: &http.Request{
805+
Method: "POST",
806+
URL: &url.URL{
807+
Scheme: "https",
808+
Host: "generativelanguage.googleapis.com",
809+
Path: "/v1beta/models/test-model:generateContent",
810+
},
811+
Header: http.Header{
812+
"Content-Type": []string{"application/json"},
813+
"X-Goog-Api-Key": []string{"test-api-key"},
814+
"User-Agent": []string{fmt.Sprintf("google-genai-sdk/%s gl-go/%s", version, runtime.Version())},
815+
"X-Goog-Api-Client": []string{fmt.Sprintf("google-genai-sdk/%s gl-go/%s", version, runtime.Version())},
816+
},
817+
Body: io.NopCloser(strings.NewReader("{\"extra_key\":\"extra_value\",\"original_key\":\"original_value\"}\n")),
818+
},
819+
wantErr: false,
820+
},
786821
}
787822

788823
for _, tt := range tests {

types.go

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)