Add support to proxy Jenkins API with POST method
Signed-off-by: rick <rick@jenkins-zh.cn>
This commit is contained in:
@@ -704,20 +704,29 @@ func AddJenkinsToContainer(webservice *restful.WebService, devopsClient devops.I
|
||||
}).
|
||||
Returns(http.StatusOK, RespOK, nil).
|
||||
Metadata(restfulspec.KeyOpenAPITags, []string{constants.DevOpsJenkinsTag}))
|
||||
|
||||
handlerWithDevOps := func(request *restful.Request, response *restful.Response) {
|
||||
u := request.Request.URL
|
||||
devops := request.PathParameter("devops")
|
||||
u.Host = parse.Host
|
||||
u.Scheme = parse.Scheme
|
||||
jenkins.SetBasicBearTokenHeader(&request.Request.Header)
|
||||
u.Path = strings.Replace(request.Request.URL.Path, fmt.Sprintf("/kapis/%s/%s/devops/%s/jenkins",
|
||||
GroupVersion.Group, GroupVersion.Version, devops), "", 1)
|
||||
httpProxy := proxy.NewUpgradeAwareHandler(u, http.DefaultTransport, false, false, &errorResponder{})
|
||||
httpProxy.ServeHTTP(response, request.Request)
|
||||
}
|
||||
// some Jenkins API against with POST method
|
||||
webservice.Route(webservice.GET("/devops/{devops}/jenkins/{path:*}").
|
||||
Param(webservice.PathParameter("path", "Path stands for any suffix path.")).
|
||||
Param(webservice.PathParameter("devops", "DevOps project's ID, e.g. project-RRRRAzLBlLEm")).
|
||||
To(func(request *restful.Request, response *restful.Response) {
|
||||
u := request.Request.URL
|
||||
devops := request.PathParameter("devops")
|
||||
u.Host = parse.Host
|
||||
u.Scheme = parse.Scheme
|
||||
jenkins.SetBasicBearTokenHeader(&request.Request.Header)
|
||||
u.Path = strings.Replace(request.Request.URL.Path, fmt.Sprintf("/kapis/%s/%s/devops/%s/jenkins",
|
||||
GroupVersion.Group, GroupVersion.Version, devops), "", 1)
|
||||
httpProxy := proxy.NewUpgradeAwareHandler(u, http.DefaultTransport, false, false, &errorResponder{})
|
||||
httpProxy.ServeHTTP(response, request.Request)
|
||||
}).
|
||||
To(handlerWithDevOps).
|
||||
Returns(http.StatusOK, RespOK, nil).
|
||||
Metadata(restfulspec.KeyOpenAPITags, []string{constants.DevOpsJenkinsTag}))
|
||||
webservice.Route(webservice.POST("/devops/{devops}/jenkins/{path:*}").
|
||||
Param(webservice.PathParameter("path", "Path stands for any suffix path.")).
|
||||
Param(webservice.PathParameter("devops", "DevOps project's ID, e.g. project-RRRRAzLBlLEm")).
|
||||
To(handlerWithDevOps).
|
||||
Returns(http.StatusOK, RespOK, nil).
|
||||
Metadata(restfulspec.KeyOpenAPITags, []string{constants.DevOpsJenkinsTag}))
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user