コード例 #1
0
        private async void PollGitHubEvents(object state)
        {
            if (Interlocked.Exchange(ref _gettingEvents, 1) == 1)
            {
                return;
            }

            var events = await _api.GetEvents();

            try
            {
                foreach (ApiEvent e in events)
                {
                    // If the event id exists in the cache then its an old entry
                    if (_eventCache.Keys.Contains(e.ID))
                    {
                        continue;
                    }

                    _eventCache.TryAdd(e.ID, e);

                    if (e.Type == "PullRequestReviewCommentEvent")
                    {
                        var pullRequestData = await _api.GetPullRequestData(e.Payload.Comment.Pull_Request_Url);

                        e.Payload.Issue = pullRequestData;
                    }

                    ApiEvent(e);
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message);
            }
            finally
            {
                Interlocked.Exchange(ref _gettingEvents, 0);
            }
        }