public async Task FindBucketByName() { var bucket = await _bucketsApi.FindBucketByNameAsync("my-bucket"); Assert.IsNotNull(bucket); Assert.AreEqual("my-bucket", bucket.Name); Assert.AreEqual((await FindMyOrg()).Id, bucket.OrgID); }
static async Task Main(string[] args) { ILoggerFactory loggerFactory = LoggerFactory.Create(builder => { builder .AddFilter("Microsoft", LogLevel.Warning) .AddFilter("System", LogLevel.Warning) .AddFilter("phetracker.Program", LogLevel.Debug) .AddConsole(c => { c.TimestampFormat = "[HH:mm:ss] "; }); }); ILogger logger = loggerFactory.CreateLogger <Program>(); logger.LogInformation("Init services...."); populationData = LoadPopulationData(); Maps maps = new Maps(); var trustsData = maps.GetTrustsForLtlas(); logger.LogInformation("Starting..."); string dataFilePath = "datacache.json"; logger.LogInformation("Downloading data from API"); APIClient client = new APIClient(logger); CaseData data = new CaseData(); var trustData = await client.GetNHSTrustData(); var processedTrustData = new List <NhsTrustDataPoint>(); if (System.IO.File.Exists(dataFilePath)) { logger.LogInformation("Using Cached data delete data.json to load fresh data"); data = JsonConvert.DeserializeObject <CaseData>(System.IO.File.ReadAllText(dataFilePath)); } else { var caseDataV1 = await client.GetLTLAData(logger); data.ltlas = new List <CaseRecord>(); data.metadata = new Metadata(); foreach (var item in caseDataV1) { data.ltlas.Add(new CaseRecord() { kind = "localAuthorityCases", areaCode = item.areaCode, areaName = item.areaName, dailyLabConfirmedCases = item.newCasesBySpecimenDate, specimenDate = item.date, }); } var caseDataString = JsonConvert.SerializeObject(data); System.IO.File.WriteAllText(dataFilePath, caseDataString); } // always process the hospital data // Build trust data structure var trustDataDictionary = trustData.GroupBy(y => y.areaName).ToDictionary(y => y.Key, z => { return(z.ToDictionary(v => v.date)); }); foreach (var ltla in data.ltlas.GroupBy(y => y.areaName)) { try { var hospitals = trustsData[ltla.Key]; foreach (var hospital in hospitals) { var hospitalData = trustDataDictionary[hospital.OrganisationName]; foreach (var dataPoint in hospitalData) { Console.WriteLine("Adding datapoint for ltal" + ltla.Key); dataPoint.Value.ltlaName = ltla.Key; processedTrustData.Add(dataPoint.Value); } } } catch (System.Exception) { Console.WriteLine("Failed to find hospitals for ltla:" + ltla.Key); } } // Combine and dedupe (for regions) case data var allCaseData = data.ltlas; var pheBucketName = "pheCovidData"; var orgId = "05d0f71967e52000"; var Token = "hYf9V7UQge2McZNCTKerUkPwLvqncruS2hczL9jJX3ohSP-zJ7Yt1Za5J33qNcKkn_rI7pU3SiWHbV5waBt4dA==".ToCharArray(); using (var influxDBClient = InfluxDBClientFactory.Create("http://localhost:9999", Token)) using (var writeApi = influxDBClient.GetWriteApi()) { BucketsApi bucketsApi = influxDBClient.GetBucketsApi(); try { var pheBucketInstance = await bucketsApi.FindBucketByNameAsync(pheBucketName); await bucketsApi.DeleteBucketAsync(pheBucketInstance); } catch (Exception e) { logger.LogError("Failed to delete bucket, may not exist" + e.ToString(), e); } var bucket = await bucketsApi.CreateBucketAsync(pheBucketName, orgId); var points = new List <PointData>(allCaseData.Count); foreach (var record in allCaseData) { var recordPer100k = ConvertToPer100kValue(record); var point = PointData.Measurement("confirmedCases") .Tag("localAuth", record.areaName) .Tag("localAuthKind", record.kind) .Tag("localAuthCode", record.areaCode) .Field("daily", record.dailyLabConfirmedCases ?? 0) .Field("daily100k", recordPer100k?.dailyLabConfirmedCases ?? 0) .Field("total", record.dailyTotalLabConfirmedCasesRate) .Field("total100k", recordPer100k?.dailyTotalLabConfirmedCasesRate ?? 0) .Timestamp(record.specimenDate.ToUniversalTime(), WritePrecision.S); points.Add(point); } foreach (var record in processedTrustData) { var point = PointData.Measurement("trustData") .Tag("localAuth", record.ltlaName) .Tag("trust", record.areaName) .Field("newAdmissions", record.newAdmissions ?? 0) .Field("cases", record.hospitalCases ?? 0) .Field("mvBeds", record.covidOccupiedMVBeds ?? 0) .Timestamp(record.date.ToUniversalTime(), WritePrecision.S); points.Add(point); } writeApi.WritePoints(pheBucketName, orgId, points); } }
static async Task Main(string[] args) { ILoggerFactory loggerFactory = LoggerFactory.Create(builder => { builder .AddFilter("Microsoft", LogLevel.Warning) .AddFilter("System", LogLevel.Warning) .AddFilter("phetracker.Program", LogLevel.Debug) .AddConsole(c => { c.TimestampFormat = "[HH:mm:ss] "; }); }); ILogger logger = loggerFactory.CreateLogger <Program>(); logger.LogInformation("Init services...."); populationData = LoadPopulationData(); logger.LogInformation("Starting..."); HttpClient client = new HttpClient(); var caseDataString = await client.GetStringAsync("https://coronavirus.data.gov.uk/downloads/json/coronavirus-cases_latest.json"); CaseData data = JsonConvert.DeserializeObject <CaseData>(caseDataString); var hash = GetHashString(caseDataString); data.metadata.hash = hash; // Combine and dedupe (for regions) case data var allCaseData = data.ltlas; var pheBucketName = "pheCovidData"; var orgId = "05d0f71967e52000"; var Token = "hYf9V7UQge2McZNCTKerUkPwLvqncruS2hczL9jJX3ohSP-zJ7Yt1Za5J33qNcKkn_rI7pU3SiWHbV5waBt4dA==".ToCharArray(); using (var influxDBClient = InfluxDBClientFactory.Create("http://localhost:9999", Token)) using (var writeApi = influxDBClient.GetWriteApi()) { BucketsApi bucketsApi = influxDBClient.GetBucketsApi(); try { var pheBucketInstance = await bucketsApi.FindBucketByNameAsync(pheBucketName); await bucketsApi.DeleteBucketAsync(pheBucketInstance); } catch (Exception e) { logger.LogError("Failed to delete bucket, may not exist" + e.ToString(), e); } var bucket = await bucketsApi.CreateBucketAsync(pheBucketName, orgId); foreach (var record in allCaseData) { var recordPer100k = ConvertToPer100kValue(record); var point = PointData.Measurement("confirmedCases") .Tag("localAuth", record.areaName) .Tag("localAuthKind", record.kind) .Tag("localAuthCode", record.areaCode) .Field("daily", record.dailyLabConfirmedCases ?? 0) .Field("daily100k", recordPer100k?.dailyLabConfirmedCases ?? 0) .Field("total", record.dailyTotalLabConfirmedCasesRate) .Field("total100k", recordPer100k?.dailyTotalLabConfirmedCasesRate ?? 0) .Timestamp(record.specimenDate.ToUniversalTime(), WritePrecision.S); writeApi.WritePoint(pheBucketName, orgId, point); } } }