cmd/responseErrorParser.go (33 lines of code) (raw):
package cmd
import (
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/bloberror"
"strings"
)
// errorURLs - map of error codes that currently have shorthand URLs
var errorURLs = map[bloberror.Code]string{
bloberror.InvalidOperation: "https://aka.ms/AzCopyError/InvalidOperation",
bloberror.MissingRequiredQueryParameter: "https://aka.ms/AzCopyError/MissingRequiredQueryParameter",
bloberror.InvalidHeaderValue: "https://aka.ms/AzCopyError/InvalidHeaderValue",
bloberror.InvalidAuthenticationInfo: "https://aka.ms/AzCopyError/InvalidAuthenticationInfo",
bloberror.NoAuthenticationInformation: "https://aka.ms/AzCopyError/NoAuthenticationInformation",
bloberror.AuthenticationFailed: "https://aka.ms/AzCopyError/AuthenticationFailed",
bloberror.AccountIsDisabled: "https://aka.ms/AzCopyError/AccountIsDisabled",
bloberror.ResourceNotFound: "https://aka.ms/AzCopyError/ResourceNotFound",
bloberror.ResourceTypeMismatch: "https://aka.ms/AzCopyError/ResourceTypeMismatch",
bloberror.CannotVerifyCopySource: "https://aka.ms/AzCopyError/CannotVerifyCopySource",
bloberror.ServerBusy: "https://aka.ms/AzCopyError/ServerBusy",
}
// getErrorCodeUrl - returns url string for specific error codes
func getErrorCodeUrl(err error) string {
var urls []string
for code, url := range errorURLs {
if hasCode(err, code) {
urls = append(urls, url)
}
}
if len(urls) > 0 {
return "ERROR DETAILS: " + strings.Join(urls, "; ")
}
return "" // We do not currently have a URL for this specific error code
}
// hasCode - checks if err contains blob error code
func hasCode(err error, code bloberror.Code) bool {
return strings.Contains(err.Error(), string(code))
}