Пример #1
0
        public async Task <List <EventfulEvent> > GetEventsAsync(SearchRequest search)
        {
            EventfulResponse[] collectionOfResponse = null;
            int totalEvent = 0;

            try
            {
                totalEvent = GetEventCount(search);
                var numOfCallsNeeded = (int)Math.Ceiling((double)totalEvent / LARGE_NUMBER);

                var tasks = new List <Task <EventfulResponse> >(numOfCallsNeeded);
                for (int i = 1; i <= numOfCallsNeeded; i++)
                {
                    var request = Create(search, i);
                    tasks.Add(_proxy.ExecuteAsync <EventfulResponse>(request));
                }

                collectionOfResponse = await Task.WhenAll(tasks).ConfigureAwait(false);
            }
            catch (Exception e)
            {
                throw new ApplicationException("Error interfacing with Eventful", e);
            }

            var ret = new List <EventfulEvent>(totalEvent);

            foreach (var resp in collectionOfResponse)
            {
                ret.AddRange(resp.Events);
            }

            return(ret);
        }
Пример #2
0
        public async Task <Guid> PublishMessageAsync <T>(T message,
                                                         CancellationToken cancellationToken = default(CancellationToken)) where T : IMessage
        {
            Guard.ThrowIfNull(message, nameof(message));

            var serializedMessage = _serializer.Serialize(message);

            var createRequest = await CreateRequest(serializedMessage, cancellationToken);

            cancellationToken.ThrowIfCancellationRequested();

            IRestResponse response;

            try
            {
                response = await _restProxy.ExecuteAsync(createRequest, cancellationToken);
            }
            catch (Exception exception)
            {
                throw new UnableToCreateMessageException(@"Error posting to Message Bus API", exception);
            }

            const HttpStatusCode expectedStatusCode = HttpStatusCode.Created;

            var returnedStatusCode = response.HttpStatusCode;

            if (returnedStatusCode != expectedStatusCode)
            {
                throw new UnableToCreateMessageException(
                          $"Unexpected HTTP status code, received {returnedStatusCode}, expected {expectedStatusCode}.");
            }

            var createdMessageId = Guid.Parse(response.ResponseBody);

            return(createdMessageId);
        }