public static async Task <Uri> PostTranscriptionAsync(TranscriptionDefinition transcriptionDefinition, string hostName, string subscriptionKey)
        {
            var path          = $"{hostName}{TranscriptionsBasePath}";
            var payloadString = JsonConvert.SerializeObject(transcriptionDefinition);

            return(await PostAsync(path, subscriptionKey, payloadString, PostTimeout).ConfigureAwait(false));
        }
        public Task <Uri> PostTranscriptionAsync(string name, string description, string locale, Dictionary <string, string> properties, IEnumerable <string> contentUrls, IEnumerable <Guid> modelIds)
        {
            var models = modelIds.Select(m => ModelIdentity.Create(m)).ToList();
            var path   = $"{SpeechToTextBasePath}Transcriptions/";

            var transcriptionDefinition = TranscriptionDefinition.Create(name, description, locale, contentUrls, properties, models);

            return(this.PostAsJsonAsync(path, transcriptionDefinition));
        }
        private async Task <Uri> PostAsJsonAsync(string path, TranscriptionDefinition payload)
        {
            var request = BuildPostWebRequest(path, payload);

            Log.LogInformation("Request: " + request);
            var webResponse = await GetHttpWebResponseAsync(request).ConfigureAwait(false);

            Log.LogInformation("StatusCode: " + webResponse.StatusCode);
            return(GetLocationFromPostResponseAsync(webResponse.Headers));
        }
        private HttpWebRequest BuildPostWebRequest(string path, TranscriptionDefinition payload)
        {
            var request = (HttpWebRequest)WebRequest.Create(new Uri(HostName + path));

            request.ContentType = "application/json; charset=UTF-8";
            request.Accept      = "application/json";
            request.Method      = "POST";
            request.Headers.Add("Ocp-Apim-Subscription-Key", SubscriptionKey);

            var payloadString = JsonConvert.SerializeObject(payload);
            var data          = Encoding.ASCII.GetBytes(payloadString);

            request.ContentLength = data.Length;

            using (var stream = request.GetRequestStream())
            {
                stream.Write(data, 0, data.Length);
            }

            return(request);
        }