55 lines
1.2 KiB
Go
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)
|
|
}
|