Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        private async Task <List <ResourceUsage> > GetBillingDataWithDailyAggregation(ResourceListResult resourceList, UsageFilterParameters usageFilterParameters)
        {
            var usageData = await GetUsageData(usageFilterParameters);

            var resourceUsageData = GetUsageDailyDataByResources(resourceList.Resources, usageData);

            return(resourceUsageData);
        }