public static async Task<JObject> HttpGet(Uri uri, TokenCacheInfo cacheInfo) { using (var client = new HttpClient()) { client.DefaultRequestHeaders.Add("Authorization", cacheInfo.CreateAuthorizationHeader()); client.DefaultRequestHeaders.Add("User-Agent", Constants.UserAgent.Value); client.DefaultRequestHeaders.Add("Accept", Constants.JsonContentType); if (Utils.IsRdfe(uri)) { client.DefaultRequestHeaders.Add("x-ms-version", "2013-10-01"); } client.DefaultRequestHeaders.Add("x-ms-request-id", Guid.NewGuid().ToString()); using (var response = await client.GetAsync(uri)) { var content = await response.Content.ReadAsStringAsync(); if (!response.IsSuccessStatusCode) { Trace.WriteLine("Status: " + response.StatusCode); Trace.WriteLine("Content: " + content); } response.EnsureSuccessStatusCode(); return JObject.Parse(content); } } }
private async Task<TenantDetails> GetTenantDetail(TokenCacheInfo cacheInfo, string tenantId) { if (Constants.InfrastructureTenantIds.Contains(tenantId)) { return new TenantDetails { objectId = tenantId, displayName = "Infrastructure", verifiedDomains = new[] { new VerifiedDomain { name = "live.com", @default = true } } }; } using (var client = new HttpClient()) { client.DefaultRequestHeaders.Add("Authorization", cacheInfo.CreateAuthorizationHeader()); client.DefaultRequestHeaders.Add("User-Agent", Constants.UserAgent.Value); var azureEnvironment = this.AzureEnvironments; var url = string.Format("{0}/{1}/tenantDetails?api-version={2}", Constants.AADGraphUrls[(int)azureEnvironment], tenantId, Constants.AADGraphApiVersion); using (var response = await client.GetAsync(url)) { if (response.IsSuccessStatusCode) { var result = await response.Content.ReadAsAsync<ResultOf<TenantDetails>>(); return result.value[0]; } var content = await response.Content.ReadAsStringAsync(); if (content.StartsWith("{")) { var error = (JObject)JObject.Parse(content)["odata.error"]; if (error != null) { throw new InvalidOperationException(String.Format("GetTenantDetail {0}, {1}", response.StatusCode, error["message"].Value<string>("value"))); } } throw new InvalidOperationException(String.Format("GetTenantDetail {0}, {1}", response.StatusCode, await response.Content.ReadAsStringAsync())); } } }
private async Task<SubscriptionInfo[]> GetSubscriptions(TokenCacheInfo cacheInfo) { using (var client = new HttpClient()) { client.DefaultRequestHeaders.Add("Authorization", cacheInfo.CreateAuthorizationHeader()); client.DefaultRequestHeaders.Add("User-Agent", Constants.UserAgent.Value); var azureEnvironment = this.AzureEnvironments; var url = string.Format("{0}/subscriptions?api-version={1}", Constants.CSMUrls[(int)azureEnvironment], Constants.CSMApiVersion); using (var response = await client.GetAsync(url)) { if (response.IsSuccessStatusCode) { var result = await response.Content.ReadAsAsync<ResultOf<SubscriptionInfo>>(); return result.value; } var content = await response.Content.ReadAsStringAsync(); if (content.StartsWith("{")) { var error = (JObject)JObject.Parse(content)["error"]; if (error != null) { throw new InvalidOperationException(String.Format("GetSubscriptions {0}, {1}", response.StatusCode, error.Value<string>("message"))); } } throw new InvalidOperationException(String.Format("GetSubscriptions {0}, {1}", response.StatusCode, await response.Content.ReadAsStringAsync())); } } }
private async Task<string[]> GetTenantIds(TokenCacheInfo cacheInfo) { using (var client = new HttpClient()) { client.DefaultRequestHeaders.Add("Authorization", cacheInfo.CreateAuthorizationHeader()); client.DefaultRequestHeaders.Add("User-Agent", Constants.UserAgent.Value); var azureEnvironment = this.AzureEnvironments; var url = string.Format("{0}/tenants?api-version={1}", Constants.CSMUrls[(int)azureEnvironment], Constants.CSMApiVersion); using (var response = await client.GetAsync(url)) { if (response.IsSuccessStatusCode) { var result = await response.Content.ReadAsAsync<ResultOf<TenantInfo>>(); return result.value.Select(tenant => tenant.tenantId).ToArray(); } throw new InvalidOperationException(await response.Content.ReadAsStringAsync()); } } }
public static async Task<int> HttpInvoke(Uri uri, TokenCacheInfo cacheInfo, string verb, DelegatingHandler handler, HttpContent content) { using (var client = new HttpClient(handler)) { client.DefaultRequestHeaders.Add("Authorization", cacheInfo.CreateAuthorizationHeader()); client.DefaultRequestHeaders.Add("User-Agent", Constants.UserAgent.Value); client.DefaultRequestHeaders.Add("Accept", Constants.JsonContentType); if (Utils.IsRdfe(uri)) { client.DefaultRequestHeaders.Add("x-ms-version", "2013-10-01"); } client.DefaultRequestHeaders.Add("x-ms-request-id", Guid.NewGuid().ToString()); HttpResponseMessage response = null; if (String.Equals(verb, "get", StringComparison.OrdinalIgnoreCase)) { response = await client.GetAsync(uri); } else if (String.Equals(verb, "delete", StringComparison.OrdinalIgnoreCase)) { response = await client.DeleteAsync(uri); } else if (String.Equals(verb, "post", StringComparison.OrdinalIgnoreCase)) { response = await client.PostAsync(uri, content); } else if (String.Equals(verb, "put", StringComparison.OrdinalIgnoreCase)) { response = await client.PutAsync(uri, content); } else if (String.Equals(verb, "patch", StringComparison.OrdinalIgnoreCase)) { using (var message = new HttpRequestMessage(new HttpMethod("PATCH"), uri)) { message.Content = content; response = await client.SendAsync(message).ConfigureAwait(false); } } else { throw new InvalidOperationException(String.Format("Invalid http verb {0}!", verb)); } using (response) { if (response.IsSuccessStatusCode) { return 0; } return (-1) * (int)response.StatusCode; } } }