You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devlake.apache.org by ab...@apache.org on 2023/09/19 09:38:55 UTC

[incubator-devlake] branch feat#5640-2 updated: feat: add jira search-remote-scopes

This is an automated email from the ASF dual-hosted git repository.

abeizn pushed a commit to branch feat#5640-2
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git


The following commit(s) were added to refs/heads/feat#5640-2 by this push:
     new 8f3d18a86 feat: add jira search-remote-scopes
8f3d18a86 is described below

commit 8f3d18a8614a0b43ca0180cdee688c1aa2e6e629
Author: abeizn <zi...@merico.dev>
AuthorDate: Tue Sep 19 17:38:43 2023 +0800

    feat: add jira search-remote-scopes
---
 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,