pkg/common/azureerrors/azureerrors.go (27 lines of code) (raw):
/*
Copyright (c) Microsoft Corporation.
Licensed under the MIT license.
*/
// Package azureerrors defines shared azure error util functions.
package azureerrors
import (
"errors"
"net/http"
"github.com/Azure/azure-sdk-for-go/sdk/azcore"
)
// IsNotFound returns true if the error is a http 404 error returned by the azure server.
func IsNotFound(err error) bool {
var responseError *azcore.ResponseError
return errors.As(err, &responseError) && responseError.StatusCode == http.StatusNotFound
}
// IsClientError returns true if the error is a client error (400-499) returned by the azure server.
func IsClientError(err error) bool {
var responseError *azcore.ResponseError
return errors.As(err, &responseError) &&
responseError.StatusCode >= http.StatusBadRequest && responseError.StatusCode < http.StatusInternalServerError
}
// IsConflict determines if the error is a http 409 error returned by the azure server.
func IsConflict(err error) bool {
var responseError *azcore.ResponseError
return errors.As(err, &responseError) && responseError.StatusCode == http.StatusConflict
}
// IsThrottled determines if the error is a http 429 error returned by the azure server.
func IsThrottled(err error) bool {
var responseError *azcore.ResponseError
return errors.As(err, &responseError) && responseError.StatusCode == http.StatusTooManyRequests
}
// IsForbidden determines if the error is a http 403 error returned by the azure server.
func IsForbidden(err error) bool {
var responseError *azcore.ResponseError
return errors.As(err, &responseError) && responseError.StatusCode == http.StatusForbidden
}