35 lines
857 B
Go
35 lines
857 B
Go
package bedrock
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
providerUtils "github.com/maximhq/bifrost/core/providers/utils"
|
|
"github.com/maximhq/bifrost/core/schemas"
|
|
"github.com/valyala/fasthttp"
|
|
)
|
|
|
|
func parseBedrockHTTPError(statusCode int, headers http.Header, body []byte) *schemas.BifrostError {
|
|
fastResp := fasthttp.AcquireResponse()
|
|
defer fasthttp.ReleaseResponse(fastResp)
|
|
|
|
fastResp.SetStatusCode(statusCode)
|
|
for k, values := range headers {
|
|
for _, value := range values {
|
|
fastResp.Header.Add(k, value)
|
|
}
|
|
}
|
|
fastResp.SetBody(body)
|
|
|
|
var errorResp BedrockError
|
|
bifrostErr := providerUtils.HandleProviderAPIError(fastResp, &errorResp)
|
|
if errorResp.Message != "" {
|
|
if bifrostErr.Error == nil {
|
|
bifrostErr.Error = &schemas.ErrorField{}
|
|
}
|
|
bifrostErr.Error.Message = errorResp.Message
|
|
bifrostErr.Error.Code = errorResp.Code
|
|
}
|
|
|
|
return bifrostErr
|
|
}
|