@@ -27,6 +27,7 @@ import (
2727 "golang.org/x/oauth2"
2828 "k8s.io/utils/clock"
2929
30+ dbg "github.com/gmlewis/go-httpdebug/httpdebug"
3031 "github.com/streamnative/streamnative-mcp-server/pkg/auth"
3132 "github.com/streamnative/streamnative-mcp-server/pkg/auth/cache"
3233 "github.com/streamnative/streamnative-mcp-server/pkg/auth/store"
@@ -35,6 +36,7 @@ import (
3536
3637var SNCloudClientConfiguration * sncloud.Configuration
3738var SNCloudClient * sncloud.APIClient
39+ var SNCloudLogClient * http.Client
3840
3941// OAuth2TokenRefresher implements oauth2.TokenSource interface for refreshing OAuth2 tokens
4042// This is now a wrapper around the cache.CachingTokenSource to leverage the existing token caching
@@ -183,3 +185,40 @@ func TokenRefreshed(audience string, token *oauth2.Token, tokenStore store.Store
183185 // Save back to store
184186 return tokenStore .SaveGrant (audience , * grant )
185187}
188+
189+ func InitSNCloudLogClient (issuerData auth.Issuer , tokenStore store.Store ) error {
190+ refresher , err := auth .NewDefaultClientCredentialsGrantRefresher (issuerData , clock.RealClock {})
191+ if err != nil {
192+ return errors .Wrap (err , "failed to create token refresher" )
193+ }
194+
195+ tokenRefresher , err := NewOAuth2TokenRefresher (tokenStore , issuerData .Audience , refresher )
196+ if err != nil {
197+ return errors .Wrap (err , "failed to create token refresher" )
198+ }
199+
200+ tokenSource := oauth2 .ReuseTokenSource (nil , tokenRefresher )
201+ b := dbg .New ()
202+ b .RedactEntireJWT = false
203+ SNCloudLogClient = & http.Client {
204+ Timeout : 10 * time .Second ,
205+ Transport : & oauth2.Transport {
206+ Source : tokenSource ,
207+ // Base: http.DefaultTransport,
208+ Base : b ,
209+ },
210+ }
211+
212+ return nil
213+ }
214+
215+ func ResetSNCloudLogClient () {
216+ SNCloudLogClient = nil
217+ }
218+
219+ func GetSNCloudLogClient () (* http.Client , error ) {
220+ if SNCloudLogClient == nil {
221+ return nil , errors .New ("log tools are for StreamNative Cloud only, please check your context" )
222+ }
223+ return SNCloudLogClient , nil
224+ }
0 commit comments