/// <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); } } }
/// <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()); } }