From d12b2d999f991b0a6bb906b6859f62c8d1f2da4f Mon Sep 17 00:00:00 2001 From: Gorbunov Kirill Andreevich Date: Sun, 31 Mar 2024 17:12:20 +0300 Subject: [PATCH] #8 execute all page pr --- internal/source/gitea/gitea.go | 67 +++++++++++++++++++--------------- 1 file changed, 38 insertions(+), 29 deletions(-) diff --git a/internal/source/gitea/gitea.go b/internal/source/gitea/gitea.go index 8658e77..1de67c5 100644 --- a/internal/source/gitea/gitea.go +++ b/internal/source/gitea/gitea.go @@ -404,39 +404,48 @@ func DeleteBranch(ctx context.Context, url, owner, repo, branch, token string) ( } func GetPulls(ctx context.Context, url, owner, repo, token string) ([]*giteaPull, error) { - var pulls []*giteaPull - var err error + var pullsAll, pulls []*giteaPull + page := 1 - req, err := http.NewRequestWithContext( - ctx, - http.MethodGet, - fmt.Sprintf("https://%s/api/v1//repos/%s/%s/pulls?state=open&page=99&token=%s", url, owner, repo, token), - nil) - if err != nil { - return nil, err - } //вроде запроса к репозиторию + for page != 0 { + req, err := http.NewRequestWithContext( + ctx, + http.MethodGet, + fmt.Sprintf("https://%s/api/v1//repos/%s/%s/pulls?state=open&page=%s&token=%s", url, owner, repo, page, token), + nil) + if err != nil { + return nil, err + } //вроде запроса к репозиторию - req.Header.Add("Accept", "application/json") - req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.Header.Add("Content-Type", "application/json") - rsp, err := http.DefaultClient.Do(req) // выполнение запроса - if err != nil { - return nil, err - } - - buf, _ := io.ReadAll(rsp.Body) - - switch rsp.StatusCode { - case http.StatusOK: - if err = json.Unmarshal(buf, &pulls); err != nil { - logger.Error(ctx, fmt.Sprintf("failed to decode response %s err: %v", buf, err)) + rsp, err := http.DefaultClient.Do(req) // выполнение запроса + if err != nil { return nil, err } - return pulls, nil - case http.StatusNotFound: - logger.Info(ctx, "PL is not exist for %s", repo) - return nil, ErrPRNotExist - default: - return nil, fmt.Errorf("unknown error: %s", buf) + + buf, _ := io.ReadAll(rsp.Body) + + switch rsp.StatusCode { + case http.StatusOK: + if err = json.Unmarshal(buf, &pulls); err != nil { + logger.Error(ctx, fmt.Sprintf("failed to decode response %s err: %v", buf, err)) + return nil, err + } + if len(pulls) == 0 { + page = 0 + break + } + pullsAll = append(pullsAll, pulls...) + page++ + case http.StatusNotFound: + logger.Info(ctx, "PL is not exist for %s", repo) + return nil, ErrPRNotExist + default: + return nil, fmt.Errorf("unknown error: %s", buf) + } } + + return pullsAll, nil }