Exemplo n.º 1
0
        /// <summary>
        /// Updates a future scheduled out-message.
        /// </summary>
        /// <param name="message">Updated message.</param>
        /// <param name="cancellationToken">Cancellation token.</param>
        public async Task UpdateOutMessageAsync(OutMessage message, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (message == null)
            {
                throw new ArgumentNullException(nameof(message));
            }
            if (message.TransactionId == null)
            {
                throw new ArgumentNullException(nameof(message.TransactionId));
            }

            var content = new StringContent(JsonConvert.SerializeObject(message, _jsonSerializerSettings), Encoding.UTF8, "application/json");
            var request = new HttpRequestMessage(HttpMethod.Put, new Uri(_httpClient.BaseAddress, $"api/out-messages/{WebUtility.UrlEncode(message.TransactionId)}"))
            {
                Content = content
            };

            await SignRequest(request).ConfigureAwait(false);

            using (var response = await _httpClient.SendAsync(request, cancellationToken).ConfigureAwait(false))
            {
                if (!response.IsSuccessStatusCode)
                {
                    await ThrowExceptionFromResponseAsync(request, response).ConfigureAwait(false);
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Creates a new out-message.
        /// </summary>
        /// <param name="message">Out-message object.</param>
        /// <param name="cancellationToken">Cancellation token.</param>
        public async Task <string> CreateOutMessageAsync(OutMessage message, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (message == null)
            {
                throw new ArgumentNullException(nameof(message));
            }

            var content = new StringContent(JsonConvert.SerializeObject(message, _jsonSerializerSettings), Encoding.UTF8, "application/json");
            var request = new HttpRequestMessage(HttpMethod.Post, new Uri(_httpClient.BaseAddress, "api/out-messages"))
            {
                Content = content
            };

            await SignRequest(request).ConfigureAwait(false);

            using (var response = await _httpClient.SendAsync(request, cancellationToken).ConfigureAwait(false))
            {
                if (!response.IsSuccessStatusCode)
                {
                    await ThrowExceptionFromResponseAsync(request, response).ConfigureAwait(false);
                }

                return(response.Headers.Location.AbsoluteUri.Split('/').Last());
            }
        }