Beispiel #1
0
        public static void AddSite(

            // the incoming queue
            [QueueTrigger(SiteMonitRConfiguration.QUEUE_NAME_NEW_SITE)] string url,

            // the list of all sites
            [Table(SiteMonitRConfiguration.TABLE_NAME_SITES)]
            IQueryable <SiteRecord> listOfSiteRecords,

            // the table into which sites should be saved
            [Table(SiteMonitRConfiguration.TABLE_NAME_SITES)]
            CloudTable table
            )
        {
            var cleansedUrl = SiteMonitRConfiguration.CleanUrlForRowKey(url);
            var siteRecord  = new SiteRecord();

            siteRecord.RowKey       = SiteMonitRConfiguration.GetPartitionKey();
            siteRecord.PartitionKey = cleansedUrl;
            siteRecord.Uri          = url;
            if (!listOfSiteRecords.ToList().Any(entity => entity.PartitionKey == siteRecord.PartitionKey))
            {
                table.Execute(TableOperation.InsertOrReplace(siteRecord));
            }
        }
Beispiel #2
0
        public static void DeleteSite(

            // the incoming queue
            [QueueInput(SiteMonitRConfiguration.QUEUE_NAME_DELETE_SITE)] string url,

            // the site list table from which data should be deleted
            [Table(SiteMonitRConfiguration.TABLE_NAME_SITES)]
            IDictionary <Tuple <string, string>, SiteRecord> siteRecords,

            // the site log table from which data should be deleted
            [Table(SiteMonitRConfiguration.TABLE_NAME_SITE_LOGS)]
            IDictionary <Tuple <string, string>, SiteResult> siteResults
            )
        {
            var cleansedUrl = SiteMonitRConfiguration.CleanUrlForRowKey(url);

            var key = new Tuple <string, string>(
                SiteMonitRConfiguration.GetPartitionKey(), cleansedUrl);

            // delete the site record
            if (siteRecords.ContainsKey(key))
            {
                siteRecords.Remove(key);
            }

            // delete all the site's logs
            foreach (var siteResult in siteResults)
            {
                if (siteResult.Key.Item1 == cleansedUrl)
                {
                    siteResults.Remove(siteResult.Key);
                }
            }
        }
Beispiel #3
0
        public static void SaveSiteLogEntry(

            // the incoming queue
            [QueueTrigger(SiteMonitRConfiguration.QUEUE_NAME_INCOMING_SITE_LOG)]
            SiteResult siteResult,

            // the site log table, into which data will be saved
            [Table(SiteMonitRConfiguration.TABLE_NAME_SITE_LOGS)]
            CloudTable resultTable
            )
        {
            siteResult.RowKey       = SiteMonitRConfiguration.CleanUrlForRowKey(siteResult.Uri);
            siteResult.PartitionKey = Path.GetFileNameWithoutExtension(Path.GetRandomFileName());
            resultTable.Execute(TableOperation.InsertOrReplace(siteResult));
        }
Beispiel #4
0
        public SiteLogTableEntity GetLatestLogForSite(string uri)
        {
            var partitionKey = SiteMonitRConfiguration.CleanUrlForRowKey(uri);

            var query = new TableQuery <SiteLogTableEntity>().Where(
                TableQuery.GenerateFilterCondition("Uri", QueryComparisons.Equal, uri)
                );

            var tbl = GetSiteLogTable();

            var ret = tbl.ExecuteQuery <SiteLogTableEntity>(query)
                      .OrderByDescending(x => x.Timestamp)
                      .FirstOrDefault();

            return(ret);
        }
Beispiel #5
0
        public static void SaveSiteLogEntry(

            // the incoming queue
            [QueueInput(SiteMonitRConfiguration.QUEUE_NAME_INCOMING_SITE_LOG)]
            SiteResult siteResult,

            // the site log table, into which data will be saved
            [Table(SiteMonitRConfiguration.TABLE_NAME_SITE_LOGS)]
            IDictionary <Tuple <string, string>, SiteResult> siteResults
            )
        {
            var tuple = new Tuple <string, string>(
                SiteMonitRConfiguration.CleanUrlForRowKey(siteResult.Uri),
                Path.GetFileNameWithoutExtension(Path.GetRandomFileName())
                );

            siteResults.Add(new KeyValuePair <Tuple <string, string>, SiteResult>(
                                tuple, siteResult));
        }
Beispiel #6
0
        public static void AddSite(

            // the incoming queue
            [QueueInput(SiteMonitRConfiguration.QUEUE_NAME_NEW_SITE)] string url,

            // the table into which sites should be saved
            [Table(SiteMonitRConfiguration.TABLE_NAME_SITES)]
            IDictionary <Tuple <string, string>, SiteRecord> siteRecords
            )
        {
            var cleansedUrl = SiteMonitRConfiguration.CleanUrlForRowKey(url);

            var key = new Tuple <string, string>(
                SiteMonitRConfiguration.GetPartitionKey(), cleansedUrl);

            if (!siteRecords.ContainsKey(key))
            {
                siteRecords.Add(key, new SiteRecord {
                    Uri = url
                });
            }
        }
Beispiel #7
0
        public static void DeleteSite(

            // the incoming queue
            [QueueTrigger(SiteMonitRConfiguration.QUEUE_NAME_DELETE_SITE)] string url,

            // the list of all sites
            [Table(SiteMonitRConfiguration.TABLE_NAME_SITES)]
            IQueryable <SiteRecord> listofSiteRecords,

            // the list of all site logs
            [Table(SiteMonitRConfiguration.TABLE_NAME_SITE_LOGS)]
            IQueryable <SiteResult> listofSiteResults,

            // the site list table from which data should be deleted
            [Table(SiteMonitRConfiguration.TABLE_NAME_SITES)]
            CloudTable recordTable,

            // the site log table from which data should be deleted
            [Table(SiteMonitRConfiguration.TABLE_NAME_SITE_LOGS)]
            CloudTable resultTable
            )
        {
            var cleansedUrl = SiteMonitRConfiguration.CleanUrlForRowKey(url);

            if (listofSiteRecords.ToList().Any(entity => entity.PartitionKey == cleansedUrl))
            {
                var siteRecord = listofSiteRecords.ToList().Where(entity => entity.RowKey == cleansedUrl).FirstOrDefault();
                recordTable.Execute(TableOperation.Delete(siteRecord));
            }
            // delete all the site's logs
            foreach (var siteResult in listofSiteResults)
            {
                if (siteResult.PartitionKey == cleansedUrl)
                {
                    resultTable.Execute(TableOperation.Delete(siteResult));
                }
            }
        }