public static async Task <string> Run([ActivityTrigger] DurableActivityContextBase myBlob, TraceWriter log)
        {
            //log.Info($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
            log.Info("in final step......................");
            string storagePath = Environment.GetEnvironmentVariable("AzureWebJobsStorage");
            CloudStorageAccount storageAccount       = CloudStorageAccount.Parse(storagePath);
            CloudBlobClient     blobClient           = storageAccount.CreateCloudBlobClient();
            CloudBlobContainer  destinationContainer = blobClient.GetContainerReference(Environment.GetEnvironmentVariable("AcceptDestinationPath"));
            //await cloudBlobContainer.CreateAsync();
            await destinationContainer.CreateIfNotExistsAsync();



            // Set the permissions so the blobs are public.
            BlobContainerPermissions permissions = new BlobContainerPermissions
            {
                PublicAccess = BlobContainerPublicAccessType.Blob
            };

            await destinationContainer.SetPermissionsAsync(permissions);

            RequestApplication requestMetadata = myBlob.GetInput <RequestApplication>();

            var sourceBlob = blobClient.GetBlobReferenceFromServerAsync(new Uri(requestMetadata.LocationUrl)).Result;
            // var destinationContainer = blobClient.GetContainerReference(destinationContainer);
            var destinationBlob = destinationContainer.GetBlobReference(sourceBlob.Name);
            await destinationBlob.StartCopyAsync(sourceBlob.Uri);

            Task.Delay(TimeSpan.FromSeconds(15)).Wait();
            await sourceBlob.DeleteAsync();

            return("Copied");
        }
コード例 #2
0
        Run([ActivityTrigger] RequestApplication request,
            TraceWriter log)
        {
            log.Info("Sending Mail....Please wait");

            var    ToAddress        = Environment.GetEnvironmentVariable("CustomerMail");
            string storagePath      = Environment.GetEnvironmentVariable("StorageaccountBaseURL") + Environment.GetEnvironmentVariable("inputStorageContainer") + request.name;
            string FunctionBasePath = Environment.GetEnvironmentVariable("FunctionBasePath");
            string mailTemplate     = Environment.GetEnvironmentVariable("MailTemplate");
            string instanceid       = request.InstanceId;

            Mail message = new Mail();

            message = new Mail();
            var personalization = new Personalization();

            personalization.AddTo(new Email(ToAddress));
            message.AddPersonalization(personalization);
            log.Info(request.LocationUrl + request.name + request.InstanceId);
            var messageContent = new Content("text/html", string.Format(mailTemplate, storagePath, FunctionBasePath, instanceid));

            message.AddContent(messageContent);
            message.Subject = "Request for Approval";
            log.Info("Mail Sent....Please chek with your admin");

            return(message);
        }
コード例 #3
0
        public static async void Run([BlobTrigger("sample-items/{name}")] Stream req,
                                     [OrchestrationClient] DurableOrchestrationClient starter, string name,
                                     TraceWriter log)
        {
            log.Info("C# HTTP trigger function processed a request.");

            RequestApplication blobDetails = new RequestApplication();

            string fileName    = name;
            string storagePath = Environment.GetEnvironmentVariable("StorageaccountBaseURL") + Environment.GetEnvironmentVariable("inputStorageContainer") + name;

            blobDetails.name        = fileName;
            blobDetails.LocationUrl = storagePath;

            await starter.StartNewAsync("Orchestration_Function", blobDetails);


            // string id = await Starter.StartNewAsync("Orchestration_Function", blobDetails);
        }
コード例 #4
0
        Orchestration_Function([OrchestrationTrigger] DurableOrchestrationContext contextBase,
                               TraceWriter log)
        {
            log.Info("C# HTTP trigger function processed a request.");

            RequestApplication details = contextBase.GetInput <RequestApplication>();

            details.InstanceId = contextBase.InstanceId;
            //  await contextBase.CallActivityAsync("A_Function", details);   //Function2 has this function name
            await contextBase.CallActivityAsync("A_SendGridEx", details);

            var      cts            = new CancellationTokenSource();
            DateTime ExpirationTime = contextBase.CurrentUtcDateTime.AddMinutes(5);
            Task     timeoutTask    = contextBase.CreateTimer(ExpirationTime, cts.Token);

            var ApprovalTask = contextBase.WaitForExternalEvent <bool>("Approved");

            Task Winner = await Task.WhenAny(ApprovalTask, timeoutTask);

            if (Winner == ApprovalTask)
            {
                bool isapproved = ApprovalTask.Result;//contextBase.WaitForExternalEvent<bool>("Approved").Result;
                if (isapproved)
                {
                    await contextBase.CallActivityAsync("MoveToAcceptBlob", details);

                    cts.Cancel();
                }
            }
            else if (Winner == timeoutTask)
            {
                log.Info("File not Accepted. Admin haven't replied to the mail.Timeout");
            }

            else
            {
                log.Info("Error Happened........................");
                cts.Cancel();
            }
            return(" ");
        }