This is an automated email from the ASF dual-hosted git repository.
klesh pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git
The following commit(s) were added to refs/heads/main by this push:
new 1d7b2fc31 feat: add jira search-remote-scopes (#6111)
1d7b2fc31 is described below
commit 1d7b2fc312e36b528b8bcd7a65a38590d222fd93
Author: abeizn <[email protected]>
AuthorDate: Tue Sep 19 17:50:11 2023 +0800
feat: add jira search-remote-scopes (#6111)
---
backend/plugins/jira/api/remote.go | 44 ++++++++++++++++++++++++++++++++++++++
backend/plugins/jira/impl/impl.go | 3 +++
2 files changed, 47 insertions(+)
diff --git a/backend/plugins/jira/api/remote.go
b/backend/plugins/jira/api/remote.go
index 441aa336d..512bfbb22 100644
--- a/backend/plugins/jira/api/remote.go
+++ b/backend/plugins/jira/api/remote.go
@@ -77,6 +77,50 @@ func RemoteScopes(input *plugin.ApiResourceInput)
(*plugin.ApiResourceOutput, er
})
}
+// SearchRemoteScopes use the Search API and only return board
+// @Summary use the Search API and only return board
+// @Description use the Search API and only return board
+// @Tags plugins/jira
+// @Accept application/json
+// @Param connectionId path int false "connection ID"
+// @Param search query string false "search"
+// @Param page query int false "page number"
+// @Param pageSize query int false "page size per page"
+// @Success 200 {object} api.SearchRemoteScopesOutput
+// @Failure 400 {object} shared.ApiBody "Bad Request"
+// @Failure 500 {object} shared.ApiBody "Internal Error"
+// @Router /plugins/jira/connections/{connectionId}/search-remote-scopes [GET]
+func SearchRemoteScopes(input *plugin.ApiResourceInput)
(*plugin.ApiResourceOutput, errors.Error) {
+ return remoteHelper.SearchRemoteScopes(input,
+ func(basicRes context.BasicRes, queryData *api.RemoteQueryData,
connection models.JiraConnection) ([]apiv2models.Board, errors.Error) {
+ apiClient, err :=
api.NewApiClientFromConnection(gocontext.TODO(), basicRes, &connection)
+ if err != nil {
+ return nil, errors.BadInput.Wrap(err, "failed
to get create apiClient")
+ }
+ query := initialQuery(queryData)
+ if len(queryData.Search) == 0 {
+ return nil, errors.BadInput.New("empty search
query")
+ }
+ query.Set("name", queryData.Search[0])
+
+ // request search
+ res, err := apiClient.Get("agile/1.0/board?", query,
nil)
+ if err != nil {
+ return nil, err
+ }
+ var resBody struct {
+ Values []apiv2models.Board `json:"values"`
+ }
+ err = api.UnmarshalResponse(res, &resBody)
+ if err != nil {
+ return nil, err
+ }
+
+ return resBody.Values, err
+
+ })
+}
+
func initialQuery(queryData *api.RemoteQueryData) url.Values {
query := url.Values{}
query.Set("maxResults", fmt.Sprintf("%v", queryData.PerPage))
diff --git a/backend/plugins/jira/impl/impl.go
b/backend/plugins/jira/impl/impl.go
index 20e6a052f..81a577cf3 100644
--- a/backend/plugins/jira/impl/impl.go
+++ b/backend/plugins/jira/impl/impl.go
@@ -293,6 +293,9 @@ func (p Jira) ApiResources()
map[string]map[string]plugin.ApiResourceHandler {
"connections/:connectionId/remote-scopes": {
"GET": api.RemoteScopes,
},
+ "connections/:connectionId/search-remote-scopes": {
+ "GET": api.SearchRemoteScopes,
+ },
"connections/:connectionId/scopes/:scopeId": {
"GET": api.GetScope,
"PATCH": api.UpdateScope,