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

lynwee 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 faf8156f1 fix: bitbucket search-remote-scopes (#6114)
faf8156f1 is described below

commit faf8156f124a1042a2b1f00cb2527e50db108c88
Author: abeizn <[email protected]>
AuthorDate: Tue Sep 19 20:43:01 2023 +0800

    fix: bitbucket search-remote-scopes (#6114)
    
    * fix: bitbucket search-remote-scopes
---
 backend/plugins/bitbucket/api/remote.go | 36 +++++++++++++++++++++++----------
 1 file changed, 25 insertions(+), 11 deletions(-)

diff --git a/backend/plugins/bitbucket/api/remote.go 
b/backend/plugins/bitbucket/api/remote.go
index 60ddd72d0..a5dd2d422 100644
--- a/backend/plugins/bitbucket/api/remote.go
+++ b/backend/plugins/bitbucket/api/remote.go
@@ -117,35 +117,49 @@ func SearchRemoteScopes(input *plugin.ApiResourceInput) 
(*plugin.ApiResourceOutp
                        // create api client
                        apiClient, err := 
api.NewApiClientFromConnection(gocontext.TODO(), basicRes, &connection)
                        if err != nil {
-                               return nil, err
+                               return nil, errors.BadInput.Wrap(err, "failed 
to get create apiClient")
                        }
-                       query := initialQuery(queryData)
-                       s := queryData.Search[0]
 
                        // request search
-                       query.Set("sort", "name")
-                       query.Set("fields", 
"values.name,values.full_name,values.language,values.description,values.owner.username,values.created_on,values.updated_on,values.links.clone,values.links.self,pagelen,page,size")
-                       gid := ``
-                       if strings.Contains(s, `/`) {
-                               gid = strings.Split(s, `/`)[0]
-                               s = strings.Split(s, `/`)[0]
+                       query := initialQuery(queryData)
+                       if len(queryData.Search) == 0 {
+                               return nil, errors.BadInput.New("empty search 
query")
                        }
-                       query.Set("q", fmt.Sprintf(`name~"%s"`, s))
+                       s := queryData.Search[0]
+                       query.Set("sort", "name")
+                       query.Set("fields", 
"values.name,values.full_name,values.language,values.description,values.owner.display_name,values.created_on,values.updated_on,values.links.clone,values.links.html,pagelen,page,size")
+                       gid, searchName := getSearch(s)
+                       query.Set("q", fmt.Sprintf(`name~"%s"`, searchName))
+
                        // list repos part
                        res, err := 
apiClient.Get(fmt.Sprintf("/repositories/%s", gid), query, nil)
                        if err != nil {
                                return nil, err
                        }
-                       resBody := &models.ReposResponse{}
+
+                       var resBody models.ReposResponse
                        err = api.UnmarshalResponse(res, &resBody)
                        if err != nil {
                                return nil, err
                        }
+
                        return resBody.Values, err
                },
        )
 }
 
+func getSearch(s string) (string, string) {
+       gid := ""
+       if strings.Contains(s, "/") {
+               parts := strings.Split(s, "/")
+               if len(parts) >= 2 {
+                       gid = parts[0]
+                       s = strings.Join(parts[1:], "/")
+               }
+       }
+       return gid, s
+}
+
 func initialQuery(queryData *api.RemoteQueryData) url.Values {
        query := url.Values{}
        query.Set("page", fmt.Sprintf("%v", queryData.Page))

Reply via email to