static void Main(string[] args)
{
//Get the AAD token to get authorized to make the call to the Usage API
string token = GetOAuthTokenFromAAD();
/*Setup API call to Usage API
Callouts:
* See the App.config file for all AppSettings key/value pairs
* You can get a list of offer numbers from this URL: http://azure.microsoft.com/en-us/support/legal/offer-details/
* See the Azure Usage API specification for more details on the query parameters for this API.
* The Usage Service/API is currently in preview; please use 2016-05-01-preview for api-version
* Please see the readme if you are having problems configuring or authenticating: https://github.com/Azure-Samples/billing-dotnet-usage-api
*/
// Build up the HttpWebRequest
string requestURL = String.Format("{0}/{1}/{2}/{3}",
ConfigurationManager.AppSettings["ARMBillingServiceURL"],
"subscriptions",
ConfigurationManager.AppSettings["SubscriptionID"],
"providers/Microsoft.Commerce/UsageAggregates?api-version=2015-06-01-preview&reportedstartTime=2015-03-01+00%3a00%3a00Z&reportedEndTime=2015-05-18+00%3a00%3a00Z");
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestURL);
// Add the OAuth Authorization header, and Content Type header
request.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + token);
request.ContentType = "application/json";
// Call the Usage API, dump the output to the console window
try
{
// Call the REST endpoint
Console.WriteLine("Calling Usage service...");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Console.WriteLine(String.Format("Usage service response status: {0}", response.StatusDescription));
Stream receiveStream = response.GetResponseStream();
// Pipes the stream to a higher level stream reader with the required encoding format.
StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8);
var usageResponse = readStream.ReadToEnd();
Console.WriteLine("Usage stream received. Press ENTER to continue with raw output.");
Console.ReadLine();
Console.WriteLine(usageResponse);
Console.WriteLine("Raw output complete. Press ENTER to continue with JSON output.");
Console.ReadLine();
// Convert the Stream to a strongly typed RateCardPayload object.
// You can also walk through this object to manipulate the individuals member objects.
UsagePayload payload = JsonConvert.DeserializeObject<UsagePayload>(usageResponse);
Console.WriteLine(usageResponse.ToString());
response.Close();
readStream.Close();
Console.WriteLine("JSON output complete. Press ENTER to close.");
Console.ReadLine();
}
catch (Exception e)
{
Console.WriteLine(String.Format("{0} \n\n{1}", e.Message, e.InnerException != null ? e.InnerException.Message : ""));
Console.ReadLine();
}
}
public static string GetOAuthTokenFromAAD()