69 lines
1.8 KiB
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
|
|
}
|
|
}
|