Files
kubesphere/pkg/simple/client/devops/interface.go
runzexia 93461cfb0b add devops project controller
Signed-off-by: runzexia <runzexia@yunify.com>
2020-03-18 14:48:41 +08:00

47 lines
939 B
Go

package devops
import (
"fmt"
"github.com/asaskevich/govalidator"
"net/http"
"strconv"
)
type Interface interface {
CredentialOperator
BuildGetter
PipelineOperator
ProjectMemberOperator
ProjectPipelineOperator
ProjectOperator
}
func GetDevOpsStatusCode(devopsErr error) int {
if code, err := strconv.Atoi(devopsErr.Error()); err == nil {
message := http.StatusText(code)
if !govalidator.IsNull(message) {
return code
}
}
if jErr, ok := devopsErr.(*ErrorResponse); ok {
return jErr.Response.StatusCode
}
return http.StatusInternalServerError
}
type ErrorResponse struct {
Body []byte
Response *http.Response
Message string
}
func (e *ErrorResponse) Error() string {
u := fmt.Sprintf("%s://%s%s", e.Response.Request.URL.Scheme, e.Response.Request.URL.Host, e.Response.Request.URL.RequestURI())
return fmt.Sprintf("%s %s: %d %s", e.Response.Request.Method, u, e.Response.StatusCode, e.Message)
}