2023-03-02 15:37:05 -05:00
|
|
|
// Copyright (c) HashiCorp, Inc.
|
2023-08-10 15:53:29 -07:00
|
|
|
// SPDX-License-Identifier: BUSL-1.1
|
2023-03-02 15:37:05 -05:00
|
|
|
|
2022-11-07 14:16:04 -05:00
|
|
|
package api
|
2021-08-05 09:25:19 -04:00
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
|
|
|
|
"strings"
|
|
|
|
|
|
|
|
|
|
"google.golang.org/grpc/codes"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
const (
|
|
|
|
|
_ = iota
|
|
|
|
|
InvalidClientConfig
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// ClientError represents a generic error for the Cloud Packer Service client.
|
|
|
|
|
type ClientError struct {
|
|
|
|
|
StatusCode uint
|
|
|
|
|
Err error
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Error returns the string message for some ClientError.
|
|
|
|
|
func (c *ClientError) Error() string {
|
|
|
|
|
return fmt.Sprintf("status %d: err %v", c.StatusCode, c.Err)
|
|
|
|
|
}
|
|
|
|
|
|
2022-11-07 14:16:04 -05:00
|
|
|
// CheckErrorCode checks the error string for err for some code and returns true
|
2021-12-01 15:58:33 +01:00
|
|
|
// if the code is found. Ideally this function should use status.FromError
|
|
|
|
|
// https://pkg.go.dev/google.golang.org/grpc/status#pkg-functions but that
|
|
|
|
|
// doesn't appear to work for all of the Cloud Packer Service response errors.
|
2022-11-07 14:16:04 -05:00
|
|
|
func CheckErrorCode(err error, code codes.Code) bool {
|
2021-08-05 09:25:19 -04:00
|
|
|
if err == nil {
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return strings.Contains(err.Error(), fmt.Sprintf("Code:%d", code))
|
|
|
|
|
}
|