Exemplo n.º 1
0
        private async Task <BatchResponse> SendBatchRequestAsync(
            IEnumerable <Message> messages,
            bool dryRun,
            CancellationToken cancellationToken)
        {
            var responses = new List <SendResponse>();

            var batch = this.CreateBatchRequest(
                messages,
                dryRun,
                (content, error, index, message) =>
            {
                SendResponse sendResponse;
                if (error != null)
                {
                    var json      = (error as ContentRetainingRequestError).Content;
                    var exception = MessagingErrorHandler.Instance.HandleHttpErrorResponse(
                        message, json);
                    sendResponse = SendResponse.FromException(exception);
                }
                else if (content != null)
                {
                    sendResponse = SendResponse.FromMessageId(content.Name);
                }
                else
                {
                    var exception = new FirebaseMessagingException(
                        ErrorCode.Unknown,
                        $"Unexpected batch response. Response status code: {message.StatusCode}.");
                    sendResponse = SendResponse.FromException(exception);
                }

                responses.Add(sendResponse);
            });

            await batch.ExecuteAsync(cancellationToken).ConfigureAwait(false);

            return(new BatchResponse(responses));
        }