Ejemplo n.º 1
0
        public static string DoWork([ActivityTrigger] VidUploadProcessRequest requestData, TraceWriter log)
        {
            log.Info($"Initiating Upload of {requestData.name}.");

            try
            {
                // create the http client
                var handler = new HttpClientHandler();
                handler.AllowAutoRedirect = false;
                var client = new HttpClient(handler);
                client.Timeout = TimeSpan.FromMinutes(10);
                // Submit Upload
                string url = $"{requestData.config.apiUrl}/{requestData.config.location}/Accounts/{requestData.config.accountId}/Videos?accessToken={requestData.accessToken}&name={requestData.name}&videoUrl={WebUtility.UrlEncode(requestData.fileURL)}";
                var    videoUploadRequestResult = client.PostAsync(url, null).Result;

                var     responseData = videoUploadRequestResult.Content.ReadAsStringAsync().Result;
                dynamic videoDetails = JsonConvert.DeserializeObject(responseData);

                if (videoUploadRequestResult.StatusCode == HttpStatusCode.OK)
                {
                    return(videoDetails.id);
                }
                else
                {
                    return(responseData.ToString());
                }
            }
            catch (Exception ex)
            {
                return(ex.InnerException.ToString());
            }
        }
Ejemplo n.º 2
0
        public static async Task <HttpResponseMessage> HttpStart(
            [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestMessage req,
            [OrchestrationClient] DurableOrchestrationClient starter,
            TraceWriter log,
            Microsoft.Azure.WebJobs.ExecutionContext context)
        {
            // Function input comes from the request content.
            VidUploadProcessRequest requestData = await req.Content.ReadAsAsync <VidUploadProcessRequest>();

            //Get the config settings and add them to the requestData object
            requestData.config = GetSettings(context);

            // Starting a new orchestrator with request data
            string instanceId = await starter.StartNewAsync("UploadVideo_Orchestrator", requestData);

            log.Info($"Started orchestration with ID = '{instanceId}'.");

            var response = starter.CreateCheckStatusResponse(req, instanceId);

            // I specify a response interval so the Logic App doesn't check the status
            // until after 10 seconds has passed. If work will be longer you can change this
            // value as needed.
            response.Headers.RetryAfter = new RetryConditionHeaderValue(TimeSpan.FromSeconds(10));
            return(response);
        }