public async Task <IActionResult> SagaStatusChecker( [HttpTrigger(AuthorizationLevel.Function, methods: "get", Route = "saga/state/{id}")] HttpRequestMessage request, string id, [DurableClient] IDurableOrchestrationClient client, [CosmosDB( databaseName: @"%CosmosDbDatabaseName%", collectionName: @"%CosmosDbOrchestratorCollectionName%", ConnectionStringSetting = @"CosmosDbConnectionString")] IDocumentClient documentClient, ILogger log) { Uri collectionUri = UriUtils.CreateTransactionCollectionUri(); TransactionItem item = documentClient .CreateDocumentQuery <TransactionItem>(collectionUri) .ToList() .Where(document => document.Id == id) .FirstOrDefault(); if (item == null) { return(new NotFoundObjectResult($@"Saga with transaction ID = {id} not found.")); } HttpResponseMessage clientResponse = client.CreateCheckStatusResponse(request, id); var durableOrchestratorFactory = new DurableClientFactory(httpClient, log); var orchestratorRuntimeStatus = await durableOrchestratorFactory.GetRuntimeStatusAsync(clientResponse); var response = new SagaStatusResponse(item.State.ToString(), orchestratorRuntimeStatus); return(new OkObjectResult(response)); }
public async void RoutingTest() { var formCollection = new Dictionary <string, StringValues> { { "From", "111-555-4512" }, { "Body", "" } }; var request = TestFactory.CreateHttpRequest(formCollection); var durableClient = DurableClientFactory.CreateDurableClient("SomeFunction"); var response = (OkObjectResult)await FnOrchestrator.Process(request, durableClient, logger); Assert.Equal(true, response.Value); }