44 "bytes"
55 "context"
66 "encoding/json"
7+ "errors"
78 "fmt"
89 "io"
910 "log"
@@ -18,7 +19,6 @@ import (
1819
1920 "github.com/bytedance/sonic"
2021 "github.com/gin-gonic/gin"
21- "github.com/pkg/errors"
2222)
2323
2424const cognitiveservicesScope = "https://cognitiveservices.azure.com/.default"
@@ -141,12 +141,12 @@ func Proxy(c *gin.Context, requestConverter RequestConverter) {
141141 if model == "" {
142142 _model , err := sonic .Get (body , "model" )
143143 if err != nil {
144- util .SendError (c , errors . Wrap ( err , "get model error" ))
144+ util .SendError (c , fmt . Errorf ( "get model error: %w" , err ))
145145 return
146146 }
147147 _modelStr , err := _model .String ()
148148 if err != nil {
149- util .SendError (c , errors . Wrap ( err , "get model name error" ))
149+ util .SendError (c , fmt . Errorf ( "get model name error: %w" , err ))
150150 return
151151 }
152152 model = _modelStr
@@ -161,40 +161,43 @@ func Proxy(c *gin.Context, requestConverter RequestConverter) {
161161
162162 // get auth token from header or deployment config
163163 token := deployment .ApiKey
164+ tokenFound := false
164165 if token == "" && token != "msi" {
165166 rawToken := req .Header .Get ("Authorization" )
166167 token = strings .TrimPrefix (rawToken , "Bearer " )
167168 req .Header .Set (APIKeyHeaderKey , token )
168169 req .Header .Del ("Authorization" )
170+ tokenFound = true
169171 }
170172 // get azure token using managed identity
171173 var azureToken azcore.AccessToken
172174 if token == "" || token == "msi" {
173175 cred , err := azidentity .NewManagedIdentityCredential (nil )
174176 if err != nil {
175- util .SendError (c , errors . Wrap ( err , "failed to create managed identity credential" ))
177+ util .SendError (c , fmt . Errorf ( "failed to create managed identity credential: %w" , err ))
176178 }
177179
178180 azureToken , err = cred .GetToken (context .TODO (), policy.TokenRequestOptions {
179181 Scopes : []string {cognitiveservicesScope },
180182 })
181183 if err != nil {
182- util .SendError (c , errors . Wrap ( err , "failed to get token" ))
184+ util .SendError (c , fmt . Errorf ( "failed to get token: %w" , err ))
183185 }
184186
185187 req .Header .Del (APIKeyHeaderKey )
186188 req .Header .Set (AuthHeaderKey , "Bearer " + azureToken .Token )
189+ tokenFound = true
187190 }
188191
189- if token == "" && azureToken . Token == "" {
192+ if ! tokenFound {
190193 util .SendError (c , errors .New ("token is empty" ))
191194 return
192195 }
193196
194197 originURL := req .URL .String ()
195198 req , err = requestConverter .Convert (req , deployment )
196199 if err != nil {
197- util .SendError (c , errors . Wrap ( err , "convert request error" ))
200+ util .SendError (c , fmt . Errorf ( "convert request error: %w" , err ))
198201 return
199202 }
200203 log .Printf ("proxying request [%s] %s -> %s" , model , originURL , req .URL .String ())
@@ -203,7 +206,7 @@ func Proxy(c *gin.Context, requestConverter RequestConverter) {
203206 proxy := & httputil.ReverseProxy {Director : director }
204207 transport , err := util .NewProxyFromEnv ()
205208 if err != nil {
206- util .SendError (c , errors . Wrap ( err , "get proxy error" ))
209+ util .SendError (c , fmt . Errorf ( "get proxy error: %w" , err ))
207210 return
208211 }
209212 if transport != nil {
@@ -227,7 +230,7 @@ func Proxy(c *gin.Context, requestConverter RequestConverter) {
227230func GetDeploymentByModel (model string ) (* DeploymentConfig , error ) {
228231 deploymentConfig , exist := ModelDeploymentConfig [model ]
229232 if ! exist {
230- return nil , errors . New ( fmt .Sprintf ("deployment config for %s not found" , model ) )
233+ return nil , fmt .Errorf ("deployment config for %s not found" , model )
231234 }
232235 return & deploymentConfig , nil
233236}
0 commit comments