28 lines
683 B
Go
28 lines
683 B
Go
package router
|
|
|
|
import "git.ilapage.cn/OPC/chorus/internal/core/provider"
|
|
|
|
func ClassifyHTTPStatus(statusCode int) provider.FailureClass {
|
|
switch {
|
|
case statusCode == 429:
|
|
return provider.FailureRateLimited
|
|
case statusCode >= 500 && statusCode <= 599:
|
|
return provider.FailureServer
|
|
case statusCode == 400:
|
|
return provider.FailureBadRequest
|
|
case statusCode == 401:
|
|
return provider.FailureUnauthorized
|
|
default:
|
|
return provider.FailureOther
|
|
}
|
|
}
|
|
|
|
func Retryable(class provider.FailureClass) bool {
|
|
switch class {
|
|
case provider.FailureRateLimited, provider.FailureServer, provider.FailureTimeout, provider.FailureConnection:
|
|
return true
|
|
default:
|
|
return false
|
|
}
|
|
}
|