private async Task <string> RequestUsageDataFromService(UsageFilterParameters usageFilterParameters) { if (!usageFilterParameters.IsValidReportedTime) { return(string.Empty); } string billingUri = string.Format(billingApiFormat, usageFilterParameters.SubscriptionId, usageFilterParameters.GetFormattedFilter()); var client = Utils.GetAuthenticatedHttpClientForApp(); client.DefaultRequestHeaders.Add(HttpRequestHeader.ContentType.ToString(), "application/json"); try { return(await client.GetStringAsync(billingUri)); } catch (Exception e) { Trace.TraceError(e.Message); return(null); } }
public async Task <UsagePayload> GetUsageData(UsageFilterParameters usageFilterParameters) { UsagePayload usageData; var usageDataResponse = await RequestUsageDataFromService(usageFilterParameters); if (string.IsNullOrEmpty(usageDataResponse)) { usageData = new UsagePayload(); } else { usageData = await Task.Factory.StartNew(() => JsonConvert.DeserializeObject <UsagePayload>(usageDataResponse)); } return(usageData); }
public async Task <List <ResourceUsage> > GetBillingDataForToday(ResourceListResult resourceList, string subscriptionId, DataAggregationType aggregationType) { UsageFilterParameters usageFilterParameters = UsageFilterParameters.GetFilterParametersForToday(); usageFilterParameters.SubscriptionId = subscriptionId; if (aggregationType == DataAggregationType.FullAggregationByResource) { return(await GetBillingData(resourceList, usageFilterParameters)); } else if (aggregationType == DataAggregationType.DailyAggregationByResource) { return(await GetBillingDataWithDailyAggregation(resourceList, usageFilterParameters)); } return(null); }
private async Task <List <ResourceUsage> > GetBillingDataWithDailyAggregation(ResourceListResult resourceList, UsageFilterParameters usageFilterParameters) { var usageData = await GetUsageData(usageFilterParameters); var resourceUsageData = GetUsageDailyDataByResources(resourceList.Resources, usageData); return(resourceUsageData); }