Exemplo n.º 1
0
        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);
        }
Exemplo n.º 3
0
        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() }");
            }
        }
Exemplo n.º 4
0
 public async Task <TransformResponse> Transform([ActivityTrigger] TransformRequest request, ILogger log)
 {
     return(await transformer.TransformAsync(request, log));
 }