public async Task <HttpResponseMessage> HttpStart( [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestMessage req, [OrchestrationClient] DurableOrchestrationClient starter, ILogger log) { TransformRequest request = await req.Content.ReadAsAsync <TransformRequest>(); string instanceId = await starter.StartNewAsync("TransformFromStorage_Orchestrator", request); log.LogInformation($"Started transform orchestration with ID = '{instanceId}'. Request = '{ JsonConvert.SerializeObject(request)}' "); return(starter.CreateCheckStatusResponse(req, instanceId)); }
public async Task <TransformResponse> TransformAsync(TransformRequest request, ILogger log) { var response = new TransformResponse() { OutputContainer = request.OutputContainer }; var blobServiceClient = new BlobServiceClient(connectionString); BlobContainerClient inputContainerClient = blobServiceClient.GetBlobContainerClient(request.InputContainer); if (!await inputContainerClient.ExistsAsync()) { log.LogError($"input container: {request.InputContainer} not exist."); throw new ArgumentException($"Container: {request.InputContainer} not exist"); } BlobClient inputBlobClient = inputContainerClient.GetBlobClient(request.InputFileName); if (!await inputBlobClient.ExistsAsync()) { log.LogError($"input blob: {request.InputFileName} not exist."); throw new ArgumentException($"Container: {request.InputFileName} not exist"); } BlobContainerClient outputContainerClient = blobServiceClient.GetBlobContainerClient(request.OutputContainer); await outputContainerClient.CreateIfNotExistsAsync(); BlobClient outputBlobClient = outputContainerClient.GetBlobClient(request.InputFileName); if (await outputBlobClient.DeleteIfExistsAsync()) { log.LogInformation($"Delete existed {outputBlobClient.Name}."); } var downloadContent = await inputBlobClient.DownloadAsync(); log.LogInformation($"Start to upload to blob: {outputBlobClient.Name}"); await outputBlobClient.UploadAsync(downloadContent.Value.Content); log.LogInformation($"Upload to blob completed: {outputBlobClient.Name}"); return(response); }
public async Task <TransformResponse> RunOrchestrator( [OrchestrationTrigger] DurableOrchestrationContext context, ILogger log) { TransformRequest request = context.GetInput <TransformRequest>(); log.LogInformation($"Start to transform. UTC: { DateTime.UtcNow.ToLongTimeString() }"); try { return(await context.CallActivityAsync <TransformResponse>("TransformFromStorage", request)); } catch (Exception ex) { log.LogError($"Transform failed with error: {ex.Message} \r\n {ex.StackTrace}"); throw; } finally { log.LogInformation($"Transform completed. UTC: { DateTime.UtcNow.ToLongTimeString() }"); } }
public async Task <TransformResponse> Transform([ActivityTrigger] TransformRequest request, ILogger log) { return(await transformer.TransformAsync(request, log)); }