in src/Microsoft.Azure.NotificationHubs/NamespaceManager.cs [471:510]
public async Task<NotificationHubJob> SubmitNotificationHubJobAsync(NotificationHubJob job, string notificationHubPath, CancellationToken cancellationToken)
{
if (job == null)
{
throw new ArgumentNullException(nameof(job));
}
if (job.OutputContainerUri == null)
{
throw new ArgumentNullException(nameof(job.OutputContainerUri));
}
var requestUri = new UriBuilder(_baseUri)
{
Scheme = Uri.UriSchemeHttps,
Path = $"{notificationHubPath}/jobs",
Query = $"api-version={ManagementStrings.ApiVersion}"
};
var xmlBody = CreateRequestBody(job);
return await _retryPolicy.RunOperation(async (ct) =>
{
using (var response = await SendAsync(() =>
{
var httpRequestMessage = CreateHttpRequest(HttpMethod.Post, requestUri.Uri);
httpRequestMessage.Content = new StreamContent(new MemoryStream(Encoding.UTF8.GetBytes(xmlBody)));
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);
return GetModelFromResponse<NotificationHubJob>(xmlResponse, trackingId);
};
}, cancellationToken);
}