in src/Microsoft.Azure.NotificationHubs/NamespaceManager.cs [414:455]
private async Task<NotificationHubDescription> CreateOrUpdateNotificationHubAsync(NotificationHubDescription description, bool update, CancellationToken cancellationToken)
{
if (description == null)
{
throw new ArgumentNullException(nameof(description));
}
var requestUri = new UriBuilder(_baseUri)
{
Scheme = Uri.UriSchemeHttps,
Path = description.Path,
Query = $"api-version={ManagementStrings.ApiVersion}"
};
var xmlBody = CreateRequestBody(description);
return await _retryPolicy.RunOperation(async (ct) =>
{
using (var response = await SendAsync(() =>
{
var httpRequestMessage = CreateHttpRequest(HttpMethod.Put, requestUri.Uri);
httpRequestMessage.Content = new StreamContent(new MemoryStream(Encoding.UTF8.GetBytes(xmlBody)));
if (update)
{
httpRequestMessage.Headers.Add("If-Match", "*");
}
return httpRequestMessage;
}, ct).ConfigureAwait(false))
{
var trackingId = string.Empty;
if (response.Headers.TryGetValues(TrackingIdHeaderKey, out var values))
{
trackingId = values.FirstOrDefault();
}
var xmlResponse = await GetXmlContent(response, trackingId).ConfigureAwait(false);
var model = GetModelFromResponse<NotificationHubDescription>(xmlResponse, trackingId);
model.Path = description.Path;
return model;
};
}, cancellationToken);
}