improve identity provider plugin
Signed-off-by: hongming <talonwan@yunify.com>
This commit is contained in:
@@ -18,6 +18,7 @@ package api
|
||||
|
||||
import (
|
||||
"github.com/emicklei/go-restful"
|
||||
"k8s.io/apimachinery/pkg/api/errors"
|
||||
"k8s.io/klog"
|
||||
"net/http"
|
||||
"runtime"
|
||||
@@ -28,32 +29,49 @@ import (
|
||||
var sanitizer = strings.NewReplacer(`&`, "&", `<`, "<", `>`, ">")
|
||||
|
||||
func HandleInternalError(response *restful.Response, req *restful.Request, err error) {
|
||||
_, fn, line, _ := runtime.Caller(1)
|
||||
klog.Errorf("%s:%d %v", fn, line, err)
|
||||
http.Error(response, sanitizer.Replace(err.Error()), http.StatusInternalServerError)
|
||||
handle(http.StatusInternalServerError, response, req, err)
|
||||
}
|
||||
|
||||
// HandleBadRequest writes http.StatusBadRequest and log error
|
||||
func HandleBadRequest(response *restful.Response, req *restful.Request, err error) {
|
||||
_, fn, line, _ := runtime.Caller(1)
|
||||
klog.Errorf("%s:%d %v", fn, line, err)
|
||||
http.Error(response, sanitizer.Replace(err.Error()), http.StatusBadRequest)
|
||||
handle(http.StatusBadRequest, response, req, err)
|
||||
}
|
||||
|
||||
func HandleNotFound(response *restful.Response, req *restful.Request, err error) {
|
||||
_, fn, line, _ := runtime.Caller(1)
|
||||
klog.Errorf("%s:%d %v", fn, line, err)
|
||||
http.Error(response, sanitizer.Replace(err.Error()), http.StatusNotFound)
|
||||
handle(http.StatusNotFound, response, req, err)
|
||||
}
|
||||
|
||||
func HandleForbidden(response *restful.Response, req *restful.Request, err error) {
|
||||
_, fn, line, _ := runtime.Caller(1)
|
||||
klog.Errorf("%s:%d %v", fn, line, err)
|
||||
http.Error(response, sanitizer.Replace(err.Error()), http.StatusForbidden)
|
||||
handle(http.StatusForbidden, response, req, err)
|
||||
}
|
||||
|
||||
func HandleUnauthorized(response *restful.Response, req *restful.Request, err error) {
|
||||
handle(http.StatusUnauthorized, response, req, err)
|
||||
}
|
||||
|
||||
func HandleTooManyRequests(response *restful.Response, req *restful.Request, err error) {
|
||||
handle(http.StatusTooManyRequests, response, req, err)
|
||||
}
|
||||
|
||||
func HandleConflict(response *restful.Response, req *restful.Request, err error) {
|
||||
_, fn, line, _ := runtime.Caller(1)
|
||||
klog.Errorf("%s:%d %v", fn, line, err)
|
||||
http.Error(response, sanitizer.Replace(err.Error()), http.StatusConflict)
|
||||
handle(http.StatusConflict, response, req, err)
|
||||
}
|
||||
|
||||
func HandleError(response *restful.Response, req *restful.Request, err error) {
|
||||
var statusCode int
|
||||
switch t := err.(type) {
|
||||
case errors.APIStatus:
|
||||
statusCode = int(t.Status().Code)
|
||||
case restful.ServiceError:
|
||||
statusCode = t.Code
|
||||
default:
|
||||
statusCode = http.StatusInternalServerError
|
||||
}
|
||||
handle(statusCode, response, req, err)
|
||||
}
|
||||
|
||||
func handle(statusCode int, response *restful.Response, req *restful.Request, err error) {
|
||||
_, fn, line, _ := runtime.Caller(2)
|
||||
klog.Errorf("%s:%d %v", fn, line, err)
|
||||
http.Error(response, sanitizer.Replace(err.Error()), statusCode)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user