lego/vendor/github.com/sacloud/libsacloud/api/error.go
2018-06-21 21:24:45 +02:00

79 lines
1.6 KiB
Go

package api
import (
"fmt"
"github.com/sacloud/libsacloud/sacloud"
)
// Error APIコール時のエラー情報
type Error interface {
// errorインターフェースを内包
error
// エラー発生時のレスポンスコード
ResponseCode() int
// エラーコード
Code() string
// エラー発生時のメッセージ
Message() string
// エラー追跡用シリアルコード
Serial() string
// エラー(オリジナル)
OrigErr() *sacloud.ResultErrorValue
}
// NewError APIコール時のエラー情報
func NewError(responseCode int, err *sacloud.ResultErrorValue) Error {
return &apiError{
responseCode: responseCode,
origErr: err,
}
}
type apiError struct {
responseCode int
origErr *sacloud.ResultErrorValue
}
// Error errorインターフェース
func (e *apiError) Error() string {
return fmt.Sprintf("Error in response: %#v", e.origErr)
}
// ResponseCode エラー発生時のレスポンスコード
func (e *apiError) ResponseCode() int {
return e.responseCode
}
// Code エラーコード
func (e *apiError) Code() string {
if e.origErr != nil {
return e.origErr.ErrorCode
}
return ""
}
// Message エラー発生時のメッセージ(
func (e *apiError) Message() string {
if e.origErr != nil {
return e.origErr.ErrorMessage
}
return ""
}
// Serial エラー追跡用シリアルコード
func (e *apiError) Serial() string {
if e.origErr != nil {
return e.origErr.Serial
}
return ""
}
// OrigErr エラー(オリジナル)
func (e *apiError) OrigErr() *sacloud.ResultErrorValue {
return e.origErr
}