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