protected override async Task Execute() { if (await AnotherSubscriptionExist()) { return; } var response = new GetPullRequestsOfRepositoryQueryResponse() { Cursor = Subscription.LastPullRequestGithubCursor }; var installationContext = await GetInstallationContext(); var batchNumber = 0; var pullRequestInfos = new List <PullRequestInfo>(1000); do { response = await GetPullRequests(installationContext, response); pullRequestInfos.AddRange(response.PullRequests); if (batchNumber % 10 == 0) { Subscription.LastPullRequestGithubCursor = response.Cursor; batchNumber = 0; await SavePullRequestInfos(pullRequestInfos, Subscription); pullRequestInfos.Clear(); } batchNumber++; } while (response.HasNextPage); await SavePullRequestInfos(pullRequestInfos, Subscription); }
private async Task <GetPullRequestsOfRepositoryQueryResponse> GetPullRequests(InstallationContext installationContext, GetPullRequestsOfRepositoryQueryResponse response, bool isRetry = false) { try { return(await _gitHubRepositoryPullRequestService .GetPullRequestsOfRepository(installationContext.AccessToken.Token, Subscription.Owner, Subscription.Repo, response.Cursor)); } catch (GitHubUnauthorizedException e) { if (isRetry) { throw; } return(await GetPullRequests(await GetInstallationContext(), response, true)); } }