public static string Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log) { NarsHttpResponseObject result = new NarsHttpResponseObject(); log.Info("GetNarsUser HttpTrigger executing..."); var content = req.Content.ReadAsStringAsync().Result; var response = NarsCaller.Execute(Environment.GetEnvironmentVariable("userUrl"), content); var responseResult = response.Content.ReadAsStringAsync().Result; if (response.IsSuccessStatusCode) { log.Info("****SUCCESS****"); JObject respResult = (JObject)JsonConvert.DeserializeObject(responseResult); result = new NarsHttpResponseObject { ReturnType = "NarsUser", ReturnObject = JsonConvert.DeserializeObject<NarsUser>(respResult["d"].ToString()), Success = true, Exception = null }; } else { log.Warning(responseResult); result = new NarsHttpResponseObject { ReturnType = "HttpResponse.Content.ToString", ReturnObject = responseResult, Success = false, Exception = null }; } return JsonConvert.SerializeObject(result); }
/// <summary> /// This is the ACTIVITY trigger version of the GetNarsUser Azure Function. This would be called by an Orchestrator. /// </summary> /// <param name="content"></param> /// <param name="log"></param> /// <returns></returns> public static string GetCalls([ActivityTrigger] string content, ILogger log) { NarsHttpResponseObject result = new NarsHttpResponseObject(); log.LogInformation("GetCalls ActivityTrigger executing..."); var response = NarsCaller.Execute(Environment.GetEnvironmentVariable("callsUrl"), content); var responseResult = response.Content.ReadAsStringAsync().Result; JObject joResult = (JObject)JsonConvert.DeserializeObject(responseResult); if (response.IsSuccessStatusCode) { log.LogInformation("****SUCCESS****"); result = new NarsHttpResponseObject { ReturnType = "List<NarsCall>", ReturnObject = JsonConvert.DeserializeObject <List <NarsCall> >(joResult["d"]["Calls"].ToString()), Success = true, Exception = null }; } else { log.LogWarning(responseResult); result = new NarsHttpResponseObject { ReturnType = "HttpResponse.Content.ToString()", ReturnObject = responseResult, Success = false, Exception = null, }; } return(JsonConvert.SerializeObject(result)); }
public static async Task <string> RunOrchestrator( [OrchestrationTrigger] DurableOrchestrationContext context) { var Tasks1 = new List <Task <string> >(); var parallelTasks = new List <Task <string> >(); string content = context.GetInput <string>(); Task <string> task = context.CallActivityAsync <string>("CallNarsUser", content); Tasks1.Add(task); await Task.WhenAll(Tasks1); JObject JSONObj = (JObject)JsonConvert.DeserializeObject(content); JsonSerializerSettings microsoftDateFormatSettings = new JsonSerializerSettings { DateFormatHandling = DateFormatHandling.MicrosoftDateFormat }; var nrk = new NarsRequestKey { OriginInfo = new OriginInfo { UserName = "******", LocalDate = DateTime.UtcNow }, UserName = (string)JSONObj["userName"], Force = false, CallStatus = 2 }; var jsonObject = Newtonsoft.Json.JsonConvert.SerializeObject(nrk, microsoftDateFormatSettings); // Replace "hello" with the name of your Durable Activity Function. Task <string> task1 = context.CallActivityAsync <string>("GetCalls", nrk); //Task<string> task2 = context.CallActivityAsync<string>("MyFunction_Second", "Seattle"); //Task<string> task3 = context.CallActivityAsync<string>("MyFunction_Third", "London"); parallelTasks.Add(task1); //parallelTasks.Add(task2); //parallelTasks.Add(task3); await Task.WhenAll(parallelTasks); NarsHttpResponseObject userResponseObject = JsonConvert.DeserializeObject <NarsHttpResponseObject>(Tasks1[0].Result); NarsHttpResponseObject callsResponseObject = JsonConvert.DeserializeObject <NarsHttpResponseObject>(parallelTasks[0].Result); List <CallReturnObject> callReturns = new List <CallReturnObject>(); callReturns.Add(new CallReturnObject("CallNarsUser", userResponseObject)); callReturns.Add(new CallReturnObject("GetCalls", callsResponseObject)); EngageAPIReturnObject result = new EngageAPIReturnObject { User = (NarsUser)userResponseObject.ReturnObject, Calls = (List <NarsCall>)callsResponseObject.ReturnObject, APICallReturnStatus = callReturns }; return(JsonConvert.SerializeObject(result)); }