Пример #1
0
        public static async Task ImportNetflix(
            [BlobTrigger("netflix-files/{filename}.{ext}")] Stream file,
            string filename,
            string ext,
            [Table("shows")] CloudTable shows,
            ILogger log)
        {
            System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);

            log.LogInformation($"C# Blob trigger function Processed blob\n Name:{filename} \n Size: {file.Length} Bytes");

            try
            {
                if (!ext.Equals("csv", StringComparison.InvariantCultureIgnoreCase))
                {
                    return;
                }

                var partitionKey = Path.GetFileName(filename);

                var tempShows = GetTempShows(file, filename, partitionKey, log);

                if (tempShows.Any())
                {
                    var query = new TableQuery <Show>().Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, partitionKey));

                    var oldShows = await shows.ExecuteQuerySegmentedAsync(query, null);

                    if (oldShows.Any())
                    {
                        await shows.ExecuteParallelBatchAsync(TableOperationType.Delete, oldShows.Cast <ITableEntity>().ToList());
                    }

                    await shows.ExecuteParallelBatchAsync(TableOperationType.Insert, tempShows.Cast <ITableEntity>().ToList());
                }
            }
            catch (Exception e)
            {
                log.LogError("BlobExample failed", e);
            }
        }