コード例 #1
0
        public static async System.Threading.Tasks.Task RunAsync(
            [QueueTrigger("podcast-to-be-added-to-weekly-activity", Connection = "AzureWebJobsStorage")] PodCast podCast,
            Binder binder,
            ILogger log)
        {
            var week = Week.FromDate(podCast.Created);

            var blobName = $"activity-weekly/{week.Year.ToString("0000")}/{week.WeekNumber.ToString("00")}.json";

            log.LogInformation($"To save to {blobName}");

            var attributes = new Attribute[]
            {
                new BlobAttribute(blobName),
                new StorageAccountAttribute("AzureWebJobsStorage")
            };

            var blob = await binder.BindAsync <CloudBlockBlob>(attributes);

            using (var locker = new CloudBlockBlobLocker <Models.WeekActivity>(blob))
            {
                var activity = locker.IsNew ?
                               new Models.WeekActivity(week.Year, week.WeekNumber) :
                               await locker.Download();

                activity.AddPodCast(podCast);

                await locker.Upload(activity);
            }
        }
        public async Task Update(Action <Models.WeekActivity> action)
        {
            var blobName = $"activity-weekly/{_week.Year.ToString("0000")}/{_week.WeekNumber.ToString("00")}.json";

            _log.LogInformation($"To save to {blobName}");

            var attributes = new Attribute[]
            {
                new BlobAttribute(blobName),
                new StorageAccountAttribute("AzureWebJobsStorage")
            };

            var blob = await _binder.BindAsync <CloudBlockBlob>(attributes);

            using (var locker = new CloudBlockBlobLocker <Models.WeekActivity>(blob))
            {
                var activity = locker.IsNew ?
                               new Models.WeekActivity(_week.Year, _week.WeekNumber) :
                               await locker.Download();

                action(activity);

                await locker.Upload(activity);
            }
        }
コード例 #3
0
        public async static Task Run([ActivityTrigger] IDurableActivityContext context, Binder binder, ILogger log)
        {
            var activityToSave = context.GetInput <Models.WeekActivity>();

            var blobName = $"activity-weekly/{activityToSave.Year.ToString("0000")}/{activityToSave.WeekNumber.ToString("00")}.json";

            log.LogInformation($"Preparing to update ${blobName}");
            var attributes = new Attribute[]
            {
                new BlobAttribute(blobName),
                new StorageAccountAttribute("AzureWebJobsStorage")
            };

            var blob = await binder.BindAsync <CloudBlockBlob>(attributes);

            log.LogInformation("Locking blob");
            using (var locker = new CloudBlockBlobLocker <Models.WeekActivity>(blob))
            {
                if (locker.IsNew)
                {
                    log.LogInformation("Uploading new blob");
                    await locker.Upload(activityToSave);
                }
                else
                {
                    var mergedActivity = await locker.Download();

                    if (activityToSave.Blogs != null)
                    {
                        mergedActivity.Blogs = activityToSave.Blogs;
                    }
                    if (activityToSave.Clients != null)
                    {
                        mergedActivity.Clients = activityToSave.Clients;
                    }
                    if (activityToSave.Focus != null)
                    {
                        mergedActivity.Focus = activityToSave.Focus;
                    }
                    if (activityToSave.Pluralsight != null)
                    {
                        mergedActivity.Pluralsight = activityToSave.Pluralsight;
                    }
                    if (activityToSave.PodCasts != null)
                    {
                        mergedActivity.PodCasts = activityToSave.PodCasts;
                    }
                    if (activityToSave.Skills != null)
                    {
                        mergedActivity.Skills = activityToSave.Skills;
                    }

                    log.LogInformation("Uploading merged blob");
                    await locker.Upload(mergedActivity);
                }
            }
        }