open-vault/vendor/github.com/cloudfoundry-community/go-cfclient/error.go
2019-06-06 12:26:04 -07:00

55 lines
1.2 KiB
Go

package cfclient
//go:generate go run gen_error.go
import (
"fmt"
)
type CloudFoundryError struct {
Code int `json:"code"`
ErrorCode string `json:"error_code"`
Description string `json:"description"`
}
type CloudFoundryErrorsV3 struct {
Errors []CloudFoundryErrorV3 `json:"errors"`
}
type CloudFoundryErrorV3 struct {
Code int `json:"code"`
Title string `json:"title"`
Detail string `json:"detail"`
}
// CF APIs v3 can return multiple errors, we take the first one and convert it into a V2 model
func NewCloudFoundryErrorFromV3Errors(cfErrorsV3 CloudFoundryErrorsV3) CloudFoundryError {
if len(cfErrorsV3.Errors) == 0 {
return CloudFoundryError{
0,
"GO-Client-No-Errors",
"No Errors in response from V3",
}
}
return CloudFoundryError{
cfErrorsV3.Errors[0].Code,
cfErrorsV3.Errors[0].Title,
cfErrorsV3.Errors[0].Detail,
}
}
func (cfErr CloudFoundryError) Error() string {
return fmt.Sprintf("cfclient error (%s|%d): %s", cfErr.ErrorCode, cfErr.Code, cfErr.Description)
}
type CloudFoundryHTTPError struct {
StatusCode int
Status string
Body []byte
}
func (e CloudFoundryHTTPError) Error() string {
return fmt.Sprintf("cfclient: HTTP error (%d): %s", e.StatusCode, e.Status)
}