Files
kirogo/proxy/kiro_headers.go

69 lines
1.8 KiB
Go

package proxy
import (
"fmt"
"kiro-go/config"
"net/http"
)
const (
kiroStreamingSDKVersion = "1.0.34"
kiroRuntimeSDKVersion = "1.0.0"
)
type kiroHeaderValues struct {
UserAgent string
AmzUserAgent string
Host string
}
func buildStreamingHeaderValues(account *config.Account, host string) kiroHeaderValues {
return buildKiroHeaderValues(account, host, "codewhispererstreaming", kiroStreamingSDKVersion, "m/E")
}
func buildRuntimeHeaderValues(account *config.Account, host string) kiroHeaderValues {
return buildKiroHeaderValues(account, host, "codewhispererruntime", kiroRuntimeSDKVersion, "m/N,E")
}
func buildKiroHeaderValues(account *config.Account, host, apiName, sdkVersion, mode string) kiroHeaderValues {
clientCfg := config.GetKiroClientConfig()
machineID := ""
if account != nil {
machineID = account.MachineId
}
userAgent := fmt.Sprintf(
"aws-sdk-js/%s ua/2.1 os/%s lang/js md/nodejs#%s api/%s#%s %s KiroIDE-%s",
sdkVersion,
clientCfg.SystemVersion,
clientCfg.NodeVersion,
apiName,
sdkVersion,
mode,
clientCfg.KiroVersion,
)
amzUserAgent := fmt.Sprintf("aws-sdk-js/%s KiroIDE-%s", sdkVersion, clientCfg.KiroVersion)
if machineID != "" {
userAgent += "-" + machineID
amzUserAgent += "-" + machineID
}
return kiroHeaderValues{
UserAgent: userAgent,
AmzUserAgent: amzUserAgent,
Host: host,
}
}
func applyKiroBaseHeaders(req *http.Request, account *config.Account, values kiroHeaderValues) {
if account != nil && account.AccessToken != "" {
req.Header.Set("Authorization", "Bearer "+account.AccessToken)
}
req.Header.Set("User-Agent", values.UserAgent)
req.Header.Set("x-amz-user-agent", values.AmzUserAgent)
req.Header.Set("x-amzn-codewhisperer-optout", "true")
if values.Host != "" {
req.Host = values.Host
}
}