From 73b2eef4b4d43b0d7be5e5a0c747fc2576140c6b Mon Sep 17 00:00:00 2001 From: l1b0k Date: Thu, 25 Jan 2024 19:53:20 +0800 Subject: [PATCH] feat: custom header Signed-off-by: l1b0k --- pkg/aliyun/credential/aliyun_client_mgr.go | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/pkg/aliyun/credential/aliyun_client_mgr.go b/pkg/aliyun/credential/aliyun_client_mgr.go index a41c3d0f..2b78a350 100644 --- a/pkg/aliyun/credential/aliyun_client_mgr.go +++ b/pkg/aliyun/credential/aliyun_client_mgr.go @@ -30,17 +30,37 @@ var ( tokenReSyncPeriod = 5 * time.Minute ) +type headerTransport struct { + headers map[string]string +} + +func (m *headerTransport) RoundTrip(req *http.Request) (*http.Response, error) { + for k, v := range m.headers { + req.Header.Set(k, v) + } + return http.DefaultTransport.RoundTrip(req) +} + func clientCfg() *sdk.Config { scheme := "HTTPS" if os.Getenv("ALICLOUD_CLIENT_SCHEME") == "HTTP" { scheme = "HTTP" } - return &sdk.Config{ + s := &sdk.Config{ Timeout: 20 * time.Second, Transport: http.DefaultTransport, UserAgent: kubernetesAlicloudIdentity, Scheme: scheme, } + if os.Getenv("X-ACSPROXY-ASCM-CONTEXT") != "" { + s.Transport = &headerTransport{ + headers: map[string]string{ + "x-acsproxy-ascm-context": os.Getenv("X-ACSPROXY-ASCM-CONTEXT"), + }, + } + } + + return s } // ClientMgr manager of aliyun openapi clientset