add devops project controller

Signed-off-by: runzexia <runzexia@yunify.com>
This commit is contained in:
runzexia
2020-03-18 14:48:41 +08:00
parent 0a07e5f652
commit 93461cfb0b
40 changed files with 1487 additions and 225 deletions

View File

@@ -1,5 +1,12 @@
package devops
import (
"fmt"
"github.com/asaskevich/govalidator"
"net/http"
"strconv"
)
type Interface interface {
CredentialOperator
@@ -10,4 +17,30 @@ type Interface interface {
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)
}