From 259d5ae950d35325aea0ab71b64075aeafd3c719 Mon Sep 17 00:00:00 2001 From: Rob Pierry Date: Tue, 23 Jun 2015 15:37:35 -0700 Subject: [PATCH] #6 - refactor serviceinvoker, split message parsing into a new class --- .../CenturyLinkCloudSDK.csproj | 2 + CenturyLinkCloudSDK/Configuration.cs | 3 + .../Runtime/DefaultHttpMessageFormatter.cs | 70 ++++++++ .../Runtime/DefaultServiceInvoker.cs | 149 +++++------------- .../Runtime/IHttpMessageFormatter.cs | 17 ++ CenturyLinkCloudSDK/Runtime/ServiceBase.cs | 34 +--- .../Services/AccountService.cs | 2 +- CenturyLinkCloudSDK/Services/AlertService.cs | 4 +- .../Services/AuthenticationService.cs | 2 +- .../Services/BillingService.cs | 8 +- .../Services/DataCenterService.cs | 22 +-- CenturyLinkCloudSDK/Services/GroupService.cs | 6 +- CenturyLinkCloudSDK/Services/QueueService.cs | 2 +- CenturyLinkCloudSDK/Services/ServerService.cs | 38 ++--- 14 files changed, 184 insertions(+), 175 deletions(-) create mode 100644 CenturyLinkCloudSDK/Runtime/DefaultHttpMessageFormatter.cs create mode 100644 CenturyLinkCloudSDK/Runtime/IHttpMessageFormatter.cs diff --git a/CenturyLinkCloudSDK/CenturyLinkCloudSDK.csproj b/CenturyLinkCloudSDK/CenturyLinkCloudSDK.csproj index 757a9bb..2dffdd9 100644 --- a/CenturyLinkCloudSDK/CenturyLinkCloudSDK.csproj +++ b/CenturyLinkCloudSDK/CenturyLinkCloudSDK.csproj @@ -40,7 +40,9 @@ + + diff --git a/CenturyLinkCloudSDK/Configuration.cs b/CenturyLinkCloudSDK/Configuration.cs index a0ca9ce..cdaf0a3 100644 --- a/CenturyLinkCloudSDK/Configuration.cs +++ b/CenturyLinkCloudSDK/Configuration.cs @@ -27,5 +27,8 @@ public static IServiceInvoker ServiceInvoker private static IServiceResolver serviceResolver = new DefaultServiceResolver(); internal static IServiceResolver ServiceResolver { get { return serviceResolver; } } + + private static IHttpMessageFormatter httpMessageFormatter = new DefaultHttpMessageFormatter(); + internal static IHttpMessageFormatter HttpMessageFormatter { get { return httpMessageFormatter; } } } } diff --git a/CenturyLinkCloudSDK/Runtime/DefaultHttpMessageFormatter.cs b/CenturyLinkCloudSDK/Runtime/DefaultHttpMessageFormatter.cs new file mode 100644 index 0000000..4ea0211 --- /dev/null +++ b/CenturyLinkCloudSDK/Runtime/DefaultHttpMessageFormatter.cs @@ -0,0 +1,70 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Http; +using System.Net.Http.Headers; +using System.Text; +using System.Threading.Tasks; + +namespace CenturyLinkCloudSDK.Runtime +{ + internal class DefaultHttpMessageFormatter : IHttpMessageFormatter + { + public HttpRequestMessage CreateHttpRequestMessage(HttpMethod httpMethod, string serviceUri, ServiceModels.Authentication authentication, object content) + { + var httpRequestMessage = new HttpRequestMessage(httpMethod, serviceUri); + httpRequestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(Constants.ServiceUris.JsonMediaType)); + + if (authentication != null) + { + httpRequestMessage.Headers.Authorization = new AuthenticationHeaderValue("Bearer", authentication.BearerToken); + } + + if (content != null) + { + var serializedContent = JsonConvert.SerializeObject(content); + httpRequestMessage.Content = new StringContent(serializedContent, new UTF8Encoding(), Constants.ServiceUris.JsonMediaType); + } + + return httpRequestMessage; + } + + public Task DeserializeResponse(HttpResponseMessage response) + { + return response.Content.ReadAsAsync(); + } + + public async Task DeserializeErrorResponse(HttpResponseMessage response) + { + if (response.IsSuccessStatusCode) return string.Empty; + + var apiError = default(ServiceModels.ApiError); + try + { + apiError = await response.Content.ReadAsAsync().ConfigureAwait(false); + }catch + { + //ignore - it'd be nice if we had a TryReadAsAsync + } + + if (apiError == default(ServiceModels.ApiError)) return string.Empty; + + var errorMessages = new StringBuilder(); + if (!string.IsNullOrEmpty(apiError.Message)) + { + errorMessages.AppendLine(apiError.Message); + } + + if(apiError.ModelState != null) + { + foreach(var error in apiError.ModelState.SelectMany(prop => prop.Value)) + { + errorMessages.AppendLine(error); + } + } + + return errorMessages.ToString(); + } + } +} diff --git a/CenturyLinkCloudSDK/Runtime/DefaultServiceInvoker.cs b/CenturyLinkCloudSDK/Runtime/DefaultServiceInvoker.cs index 376ca3d..1dbab13 100644 --- a/CenturyLinkCloudSDK/Runtime/DefaultServiceInvoker.cs +++ b/CenturyLinkCloudSDK/Runtime/DefaultServiceInvoker.cs @@ -16,6 +16,30 @@ namespace CenturyLinkCloudSDK.Runtime { internal class DefaultServiceInvoker : IServiceInvoker { + CenturyLinkCloudServiceException CreateDetailedException(HttpRequestMessage request, HttpResponseMessage response, Exception innerOrNull) + { + var message = Constants.ExceptionMessages.DefaultServiceExceptionMessage; + var ex = + innerOrNull == null ? + new CenturyLinkCloudServiceException(message) : + new CenturyLinkCloudServiceException(message, innerOrNull); + + ex.HttpRequestMessage = request; + ex.HttpResponseMessage = response; + + if (request.Content != null) + { + ex.RequestContent = request.Content.ReadAsStringAsync().Result; + } + + if (response.Content != null) + { + ex.ResponseContent = response.Content.ReadAsStringAsync().Result; + } + + return ex; + } + /// /// This is the main method through which all api requests are made. /// @@ -26,131 +50,44 @@ internal class DefaultServiceInvoker : IServiceInvoker public async Task Invoke(HttpRequestMessage httpRequestMessage, CancellationToken cancellationToken) where TResponse : class { + var messageFormatter = Configuration.HttpMessageFormatter; + using (HttpClient httpClient = new HttpClient(new NativeMessageHandler())) { httpClient.BaseAddress = new Uri(Configuration.BaseUri); - httpClient.DefaultRequestHeaders.Accept.Clear(); - httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(Constants.ServiceUris.JsonMediaType)); - + HttpResponseMessage httpResponseMessage = null; try { httpResponseMessage = await httpClient.SendAsync(httpRequestMessage, cancellationToken).ConfigureAwait(false); - var response = await DeserializeResponse(httpResponseMessage).ConfigureAwait(false); - - return response; - } - catch (CenturyLinkCloudServiceException ex) - { - ex.HttpRequestMessage = httpRequestMessage; - ex.HttpResponseMessage = httpResponseMessage; - if (httpRequestMessage.Content != null) + if (httpResponseMessage.IsSuccessStatusCode) { - ex.RequestContent = httpRequestMessage.Content.ReadAsStringAsync().Result; - } - - if (httpResponseMessage.Content != null) - { - ex.ResponseContent = httpResponseMessage.Content.ReadAsStringAsync().Result; - } - - throw ex; - } - catch (Exception ex) + return await messageFormatter.DeserializeResponse(httpResponseMessage).ConfigureAwait(false); + } + }catch(Exception ex) { - var serviceException = new CenturyLinkCloudServiceException(Constants.ExceptionMessages.DefaultServiceExceptionMessage, ex); - serviceException.HttpRequestMessage = httpRequestMessage; - serviceException.HttpResponseMessage = httpResponseMessage; - - if (httpRequestMessage.Content != null) - { - serviceException.RequestContent = httpRequestMessage.Content.ReadAsStringAsync().Result; - } - - if (httpResponseMessage.Content != null) - { - serviceException.ResponseContent = httpResponseMessage.Content.ReadAsStringAsync().Result; - } - - throw serviceException; + //sending failed or parsing the response did + throw CreateDetailedException(httpRequestMessage, httpResponseMessage, ex); } - } - } - - private static async Task DeserializeResponse(HttpResponseMessage httpResponseMessage) - { - var apiMessage = new StringBuilder(); - - if (httpResponseMessage.IsSuccessStatusCode) - { - return await httpResponseMessage.Content.ReadAsAsync().ConfigureAwait(false); - } - - if (!httpResponseMessage.IsSuccessStatusCode) - { + //request failed //This logic is necessary to prevent exceptions from being thrown when a resource is not found due to bad data in the system. - if(httpResponseMessage.StatusCode == System.Net.HttpStatusCode.NotFound) + if (httpResponseMessage.StatusCode == System.Net.HttpStatusCode.NotFound) { return default(TResponse); } - var serviceException = new CenturyLinkCloudServiceException(Constants.ExceptionMessages.DefaultServiceExceptionMessage); - var apiError = await DeserializeApiErrorMessage(httpResponseMessage).ConfigureAwait(false); - - if(apiError != null) - { - if(!string.IsNullOrEmpty(apiError.Message)) - { - apiMessage.Append(apiError.Message); - } - - if(apiError.ModelState != null) - { - if(apiError.ModelState.Count > 0) - { - foreach(var modelProperty in apiError.ModelState) - { - foreach(var errorMessage in modelProperty.Value) - { - apiMessage.AppendLine(errorMessage); - } - } - } - } - - } - - if (apiMessage.Length == 0) - { - apiMessage.Append(Constants.ExceptionMessages.DefaultServiceExceptionMessage); - } - - serviceException.ApiMessage = apiMessage.ToString(); - - throw serviceException; + var detailedEx = CreateDetailedException(httpRequestMessage, httpResponseMessage, null); + var errorMessageOrEmpty = await Configuration.HttpMessageFormatter.DeserializeErrorResponse(httpResponseMessage).ConfigureAwait(false); + detailedEx.ApiMessage = + string.IsNullOrEmpty(errorMessageOrEmpty) ? + Constants.ExceptionMessages.DefaultServiceExceptionMessage : + errorMessageOrEmpty; + throw detailedEx; } - - return default(TResponse); - } - - private static async Task DeserializeApiErrorMessage(HttpResponseMessage httpResponseMessage) - { - if (!httpResponseMessage.IsSuccessStatusCode) - { - var content = await httpResponseMessage.Content.ReadAsStringAsync().ConfigureAwait(false); - JObject jsonObject = content.TryParseJson(); - - if (jsonObject != null) - { - return await httpResponseMessage.Content.ReadAsAsync().ConfigureAwait(false); - } - } - - return null; - } + } } } diff --git a/CenturyLinkCloudSDK/Runtime/IHttpMessageFormatter.cs b/CenturyLinkCloudSDK/Runtime/IHttpMessageFormatter.cs new file mode 100644 index 0000000..68d42b8 --- /dev/null +++ b/CenturyLinkCloudSDK/Runtime/IHttpMessageFormatter.cs @@ -0,0 +1,17 @@ +using CenturyLinkCloudSDK.ServiceModels; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Http; +using System.Text; +using System.Threading.Tasks; + +namespace CenturyLinkCloudSDK.Runtime +{ + public interface IHttpMessageFormatter + { + HttpRequestMessage CreateHttpRequestMessage(HttpMethod httpMethod, string serviceUri, Authentication authentication, object content); + Task DeserializeResponse(HttpResponseMessage response); + Task DeserializeErrorResponse(HttpResponseMessage response); + } +} diff --git a/CenturyLinkCloudSDK/Runtime/ServiceBase.cs b/CenturyLinkCloudSDK/Runtime/ServiceBase.cs index 9835003..3b003f8 100644 --- a/CenturyLinkCloudSDK/Runtime/ServiceBase.cs +++ b/CenturyLinkCloudSDK/Runtime/ServiceBase.cs @@ -25,9 +25,9 @@ protected ServiceBase(Authentication authentication, IServiceInvoker serviceInvo /// /// /// - protected HttpRequestMessage CreateHttpRequestMessage(HttpMethod httpMethod, string serviceUri) + protected HttpRequestMessage CreateAuthorizedHttpRequestMessage(HttpMethod httpMethod, string serviceUri) { - return CreateHttpRequestMessage(httpMethod, serviceUri, null); + return CreateAuthorizedHttpRequestMessage(httpMethod, serviceUri, null); } /// @@ -38,32 +38,12 @@ protected HttpRequestMessage CreateHttpRequestMessage(HttpMethod httpMethod, str /// /// /// - protected HttpRequestMessage CreateHttpRequestMessage(HttpMethod httpMethod, string serviceUri, TContent content) + protected HttpRequestMessage CreateAuthorizedHttpRequestMessage(HttpMethod httpMethod, string serviceUri, object content) { - var httpRequestMessage = new HttpRequestMessage(httpMethod, serviceUri); - httpRequestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(Constants.ServiceUris.JsonMediaType)); - - try - { - if (content != null) - { - var serializedContent = JsonConvert.SerializeObject(content); - httpRequestMessage.Content = new StringContent(serializedContent, new UTF8Encoding(), Constants.ServiceUris.JsonMediaType); - } - - if (authentication != null) - { - httpRequestMessage.Headers.Authorization = new AuthenticationHeaderValue("Bearer", authentication.BearerToken); - } - } - catch(Exception ex) - { - var serviceException = new CenturyLinkCloudServiceException(Constants.ExceptionMessages.DefaultServiceExceptionMessage, ex); - serviceException.HttpRequestMessage = httpRequestMessage; - throw serviceException; - } - - return httpRequestMessage; + return + Configuration + .HttpMessageFormatter + .CreateHttpRequestMessage(httpMethod, serviceUri, authentication, content); } } } diff --git a/CenturyLinkCloudSDK/Services/AccountService.cs b/CenturyLinkCloudSDK/Services/AccountService.cs index 13de7c3..7f378d3 100644 --- a/CenturyLinkCloudSDK/Services/AccountService.cs +++ b/CenturyLinkCloudSDK/Services/AccountService.cs @@ -83,7 +83,7 @@ public async Task> GetRecentActivity(IEnumerable a { var requestModel = new GetRecentActivityRequest() { Accounts = accounts, Limit = recordCountLimit }; - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Post, string.Format(Constants.ServiceUris.Account.GetRecentActivity, Configuration.BaseUri), requestModel); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Post, string.Format(Constants.ServiceUris.Account.GetRecentActivity, Configuration.BaseUri), requestModel); var result = await serviceInvoker.Invoke>(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; diff --git a/CenturyLinkCloudSDK/Services/AlertService.cs b/CenturyLinkCloudSDK/Services/AlertService.cs index 412c07a..c382f5c 100644 --- a/CenturyLinkCloudSDK/Services/AlertService.cs +++ b/CenturyLinkCloudSDK/Services/AlertService.cs @@ -36,7 +36,7 @@ public async Task GetAlertPolicies() /// public async Task GetAlertPolicies(CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Get, string.Format(Constants.ServiceUris.Alerts.GetAlertPoliciesForAccount, Configuration.BaseUri, authentication.AccountAlias)); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Get, string.Format(Constants.ServiceUris.Alerts.GetAlertPoliciesForAccount, Configuration.BaseUri, authentication.AccountAlias)); var result = await serviceInvoker.Invoke(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; @@ -149,7 +149,7 @@ internal async Task> GetTriggersByAlertPolicyLink(stri /// internal async Task> GetTriggersByAlertPolicyLink(string uri, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Get, uri); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Get, uri); var alertPolicy = await serviceInvoker.Invoke(httpRequestMessage, cancellationToken).ConfigureAwait(false); return alertPolicy.Triggers; diff --git a/CenturyLinkCloudSDK/Services/AuthenticationService.cs b/CenturyLinkCloudSDK/Services/AuthenticationService.cs index 0fa1c9d..5c8fc8a 100644 --- a/CenturyLinkCloudSDK/Services/AuthenticationService.cs +++ b/CenturyLinkCloudSDK/Services/AuthenticationService.cs @@ -43,7 +43,7 @@ public async Task Login(string username, string password, Cancellation { var requestModel = new LoginRequest() { UserName = username, Password = password }; - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Post, string.Format(Constants.ServiceUris.Authentication.Login, Configuration.BaseUri), requestModel); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Post, string.Format(Constants.ServiceUris.Authentication.Login, Configuration.BaseUri), requestModel); var result = await serviceInvoker.Invoke(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; diff --git a/CenturyLinkCloudSDK/Services/BillingService.cs b/CenturyLinkCloudSDK/Services/BillingService.cs index 123a93a..b3885a0 100644 --- a/CenturyLinkCloudSDK/Services/BillingService.cs +++ b/CenturyLinkCloudSDK/Services/BillingService.cs @@ -119,7 +119,7 @@ public async Task GetServerResourceUnitPricing(string serverId) /// public async Task GetServerResourceUnitPricing(string serverId, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Get, string.Format(Constants.ServiceUris.Billing.GetServerResourceUnitPricing, Configuration.BaseUri, authentication.AccountAlias, serverId)); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Get, string.Format(Constants.ServiceUris.Billing.GetServerResourceUnitPricing, Configuration.BaseUri, authentication.AccountAlias, serverId)); var result = await serviceInvoker.Invoke(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; } @@ -142,7 +142,7 @@ internal async Task GetAccountBillingDetailsByLink(string /// internal async Task GetAccountBillingDetailsByLink(string uri, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Get, uri); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Get, uri); var result = await serviceInvoker.Invoke(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; @@ -166,7 +166,7 @@ internal async Task GetGroupBillingDetailsByLink(string uri) /// internal async Task GetGroupBillingDetailsByLink(string uri, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Get, uri); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Get, uri); var result = await serviceInvoker.Invoke(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; @@ -192,7 +192,7 @@ internal async Task GetGroupBillingTotalsByLink(string uri, Cance { var billingDetail = new BillingDetail(); - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Get, uri); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Get, uri); var result = await serviceInvoker.Invoke(httpRequestMessage, cancellationToken).ConfigureAwait(false); foreach (var group in result.Groups) diff --git a/CenturyLinkCloudSDK/Services/DataCenterService.cs b/CenturyLinkCloudSDK/Services/DataCenterService.cs index 2c23264..42e9dc2 100644 --- a/CenturyLinkCloudSDK/Services/DataCenterService.cs +++ b/CenturyLinkCloudSDK/Services/DataCenterService.cs @@ -43,7 +43,7 @@ public async Task> GetDataCenters() /// public async Task> GetDataCenters(CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Get, string.Format(Constants.ServiceUris.DataCenter.GetDataCenters, Configuration.BaseUri, authentication.AccountAlias, string.Empty)); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Get, string.Format(Constants.ServiceUris.DataCenter.GetDataCenters, Configuration.BaseUri, authentication.AccountAlias, string.Empty)); var result = await serviceInvoker.Invoke>(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; @@ -232,7 +232,7 @@ public async Task GetDataCenterWithTotalAssets(string dataCenterId) public async Task GetDataCenterWithTotalAssets(string dataCenterId, CancellationToken cancellationToken) { //var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Get, string.Format(Constants.ServiceUris.DataCenter.GetDataCenter, Configuration.BaseUri, authentication.AccountAlias, dataCenterId, Constants.ServiceUris.Querystring.IncludeGroupLinksAndTotalAssets)); - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Get, string.Format(Constants.ServiceUris.DataCenter.GetDataCenter, Configuration.BaseUri, authentication.AccountAlias, dataCenterId, Constants.ServiceUris.Querystring.IncludeTotalAssets)); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Get, string.Format(Constants.ServiceUris.DataCenter.GetDataCenter, Configuration.BaseUri, authentication.AccountAlias, dataCenterId, Constants.ServiceUris.Querystring.IncludeTotalAssets)); var result = await serviceInvoker.Invoke(httpRequestMessage, cancellationToken).ConfigureAwait(false); result.Authentication = authentication; @@ -257,7 +257,7 @@ public async Task GetDataCenterWithGroupsAndTotalAssets(string dataC /// public async Task GetDataCenterWithGroupsAndTotalAssets(string dataCenterId, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Get, string.Format(Constants.ServiceUris.DataCenter.GetDataCenter, Configuration.BaseUri, authentication.AccountAlias, dataCenterId, Constants.ServiceUris.Querystring.IncludeGroupLinksAndTotalAssets)); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Get, string.Format(Constants.ServiceUris.DataCenter.GetDataCenter, Configuration.BaseUri, authentication.AccountAlias, dataCenterId, Constants.ServiceUris.Querystring.IncludeGroupLinksAndTotalAssets)); var result = await serviceInvoker.Invoke(httpRequestMessage, cancellationToken).ConfigureAwait(false); result.Authentication = authentication; @@ -333,7 +333,7 @@ public async Task> GetRecentActivity(IEnumerable a Limit = recordCountLimit }; - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Post, string.Format(Constants.ServiceUris.DataCenter.GetRecentActivity, Configuration.BaseUri), requestModel); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Post, string.Format(Constants.ServiceUris.DataCenter.GetRecentActivity, Configuration.BaseUri), requestModel); var result = await serviceInvoker.Invoke>(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; @@ -357,7 +357,7 @@ public async Task GetDeploymentCapabilities(stri /// public async Task GetDeploymentCapabilities(string dataCenterId, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Get, string.Format(Constants.ServiceUris.DataCenter.GetDeploymentCapabilities, Configuration.BaseUri, authentication.AccountAlias, dataCenterId)); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Get, string.Format(Constants.ServiceUris.DataCenter.GetDeploymentCapabilities, Configuration.BaseUri, authentication.AccountAlias, dataCenterId)); var result = await serviceInvoker.Invoke(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; @@ -381,7 +381,7 @@ internal async Task GetDataCenterByLink(string uri) /// internal async Task GetDataCenterByLink(string uri, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Get, uri); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Get, uri); var result = await serviceInvoker.Invoke(httpRequestMessage, cancellationToken).ConfigureAwait(false); result.Authentication = authentication; @@ -410,7 +410,7 @@ internal async Task GetDataCenterGroupByLink(string uri) /// internal async Task GetDataCenterGroupByLink(string uri, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Get, uri); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Get, uri); var result = await serviceInvoker.Invoke(httpRequestMessage, cancellationToken).ConfigureAwait(false); result.Authentication = authentication; @@ -435,7 +435,7 @@ internal async Task GetComputeLimitsByLink(string uri) /// internal async Task GetComputeLimitsByLink(string uri, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Get, uri); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Get, uri); var result = await serviceInvoker.Invoke(httpRequestMessage, cancellationToken).ConfigureAwait(false); if (result != null) @@ -465,7 +465,7 @@ internal async Task GetRootGroupByLink(string uri) /// internal async Task GetRootGroupByLink(string uri, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Get, uri); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Get, uri); var result = await serviceInvoker.Invoke(httpRequestMessage, cancellationToken).ConfigureAwait(false); result.Authentication = authentication; @@ -491,7 +491,7 @@ internal async Task GetDefaultSettingsByLink(string uri) /// internal async Task GetDefaultSettingsByLink(string uri, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Get, uri); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Get, uri); var result = await serviceInvoker.Invoke(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; @@ -515,7 +515,7 @@ internal async Task GetNetworkLimitsByLink(string uri) /// internal async Task GetNetworkLimitsByLink(string uri, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Get, uri); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Get, uri); var result = await serviceInvoker.Invoke(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; diff --git a/CenturyLinkCloudSDK/Services/GroupService.cs b/CenturyLinkCloudSDK/Services/GroupService.cs index 5965152..faec190 100644 --- a/CenturyLinkCloudSDK/Services/GroupService.cs +++ b/CenturyLinkCloudSDK/Services/GroupService.cs @@ -114,7 +114,7 @@ public async Task> GetRecentActivity(IEnumerable a Limit = recordCountLimit }; - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Post, string.Format(Constants.ServiceUris.Group.GetRecentActivity, Configuration.BaseUri), requestModel); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Post, string.Format(Constants.ServiceUris.Group.GetRecentActivity, Configuration.BaseUri), requestModel); var result = await serviceInvoker.Invoke>(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; @@ -300,7 +300,7 @@ public async Task GetGroupHierarchy(Group group, bool includeSer /// internal async Task GetDefaultSettingsByLink(string uri, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Get, uri); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Get, uri); var result = await serviceInvoker.Invoke(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; @@ -392,7 +392,7 @@ internal async Task GetGroupByLink(string uri) /// internal async Task GetGroupByLink(string uri, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Get, uri); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Get, uri); var result = await serviceInvoker.Invoke(httpRequestMessage, cancellationToken).ConfigureAwait(false); result.Authentication = authentication; diff --git a/CenturyLinkCloudSDK/Services/QueueService.cs b/CenturyLinkCloudSDK/Services/QueueService.cs index e0c0096..3ae302a 100644 --- a/CenturyLinkCloudSDK/Services/QueueService.cs +++ b/CenturyLinkCloudSDK/Services/QueueService.cs @@ -74,7 +74,7 @@ internal async Task GetStatusByLink(string uri) /// internal async Task GetStatusByLink(string uri, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Get, uri); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Get, uri); var result = await serviceInvoker.Invoke(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; diff --git a/CenturyLinkCloudSDK/Services/ServerService.cs b/CenturyLinkCloudSDK/Services/ServerService.cs index f819214..6f17d4d 100644 --- a/CenturyLinkCloudSDK/Services/ServerService.cs +++ b/CenturyLinkCloudSDK/Services/ServerService.cs @@ -72,7 +72,7 @@ public async Task> PauseServer(List serverI /// public async Task> PauseServer(List serverIds, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Post, string.Format(Constants.ServiceUris.Server.PauseServer, Configuration.BaseUri, authentication.AccountAlias), serverIds.ToArray()); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Post, string.Format(Constants.ServiceUris.Server.PauseServer, Configuration.BaseUri, authentication.AccountAlias), serverIds.ToArray()); var result = await serviceInvoker.Invoke>(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; @@ -101,7 +101,7 @@ public async Task> PowerOnServer(List serve /// public async Task> PowerOnServer(List serverIds, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Post, string.Format(Constants.ServiceUris.Server.PowerOnServer, Configuration.BaseUri, authentication.AccountAlias), serverIds.ToArray()); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Post, string.Format(Constants.ServiceUris.Server.PowerOnServer, Configuration.BaseUri, authentication.AccountAlias), serverIds.ToArray()); var result = await serviceInvoker.Invoke>(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; @@ -130,7 +130,7 @@ public async Task> PowerOffServer(List serv /// public async Task> PowerOffServer(List serverIds, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Post, string.Format(Constants.ServiceUris.Server.PowerOffServer, Configuration.BaseUri, authentication.AccountAlias), serverIds.ToArray()); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Post, string.Format(Constants.ServiceUris.Server.PowerOffServer, Configuration.BaseUri, authentication.AccountAlias), serverIds.ToArray()); var result = await serviceInvoker.Invoke>(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; @@ -159,7 +159,7 @@ public async Task> RebootServer(List server /// public async Task> RebootServer(List serverIds, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Post, string.Format(Constants.ServiceUris.Server.RebootServer, Configuration.BaseUri, authentication.AccountAlias), serverIds.ToArray()); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Post, string.Format(Constants.ServiceUris.Server.RebootServer, Configuration.BaseUri, authentication.AccountAlias), serverIds.ToArray()); var result = await serviceInvoker.Invoke>(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; @@ -188,7 +188,7 @@ public async Task> ShutDownServer(List serv /// public async Task> ShutDownServer(List serverIds, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Post, string.Format(Constants.ServiceUris.Server.ShutDownServer, Configuration.BaseUri, authentication.AccountAlias), serverIds.ToArray()); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Post, string.Format(Constants.ServiceUris.Server.ShutDownServer, Configuration.BaseUri, authentication.AccountAlias), serverIds.ToArray()); var result = await serviceInvoker.Invoke>(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; @@ -217,7 +217,7 @@ public async Task> ResetServer(List serverI /// public async Task> ResetServer(List serverIds, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Post, string.Format(Constants.ServiceUris.Server.ResetServer, Configuration.BaseUri, authentication.AccountAlias), serverIds.ToArray()); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Post, string.Format(Constants.ServiceUris.Server.ResetServer, Configuration.BaseUri, authentication.AccountAlias), serverIds.ToArray()); var result = await serviceInvoker.Invoke>(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; @@ -241,7 +241,7 @@ public async Task> StartMaintenance(List se /// public async Task> StartMaintenance(List serverIds, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Post, string.Format(Constants.ServiceUris.Server.StartMaintenance, Configuration.BaseUri, authentication.AccountAlias), serverIds.ToArray()); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Post, string.Format(Constants.ServiceUris.Server.StartMaintenance, Configuration.BaseUri, authentication.AccountAlias), serverIds.ToArray()); var result = await serviceInvoker.Invoke>(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; @@ -265,7 +265,7 @@ public async Task> StopMaintenance(List ser /// public async Task> StopMaintenance(List serverIds, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Post, string.Format(Constants.ServiceUris.Server.StopMaintenance, Configuration.BaseUri, authentication.AccountAlias), serverIds.ToArray()); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Post, string.Format(Constants.ServiceUris.Server.StopMaintenance, Configuration.BaseUri, authentication.AccountAlias), serverIds.ToArray()); var result = await serviceInvoker.Invoke>(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; @@ -311,7 +311,7 @@ public async Task CreateServer(CreateServerRequest request /// public async Task CreateServer(CreateServerRequest request, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Post, string.Format(Constants.ServiceUris.Server.CreateServer, Configuration.BaseUri, authentication.AccountAlias), request); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Post, string.Format(Constants.ServiceUris.Server.CreateServer, Configuration.BaseUri, authentication.AccountAlias), request); var result = await serviceInvoker.Invoke(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; @@ -359,7 +359,7 @@ public async Task GetPublicIpAddress(string serverId, string pu /// public async Task GetPublicIpAddress(string serverId, string publicIp, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Get, string.Format(Constants.ServiceUris.Server.RUDPublicIpAddress, Configuration.BaseUri, authentication.AccountAlias, serverId, publicIp)); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Get, string.Format(Constants.ServiceUris.Server.RUDPublicIpAddress, Configuration.BaseUri, authentication.AccountAlias, serverId, publicIp)); var result = await serviceInvoker.Invoke(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; @@ -385,7 +385,7 @@ public async Task AddPublicIpAddress(string serverId, PublicIpAddress publ /// public async Task AddPublicIpAddress(string serverId, PublicIpAddress publicIpRequestContent, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Post, string.Format(Constants.ServiceUris.Server.AddPublicIpAddress, Configuration.BaseUri, authentication.AccountAlias, serverId), publicIpRequestContent); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Post, string.Format(Constants.ServiceUris.Server.AddPublicIpAddress, Configuration.BaseUri, authentication.AccountAlias, serverId), publicIpRequestContent); var result = await serviceInvoker.Invoke(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; @@ -411,7 +411,7 @@ public async Task RemovePublicIpAddress(string serverId, string publicIp) /// public async Task RemovePublicIpAddress(string serverId, string publicIp, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Delete, string.Format(Constants.ServiceUris.Server.RUDPublicIpAddress, Configuration.BaseUri, authentication.AccountAlias, serverId, publicIp)); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Delete, string.Format(Constants.ServiceUris.Server.RUDPublicIpAddress, Configuration.BaseUri, authentication.AccountAlias, serverId, publicIp)); var result = await serviceInvoker.Invoke(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; @@ -439,7 +439,7 @@ public async Task UpdatePublicIpAddress(string serverId, string publicIp, /// public async Task UpdatePublicIpAddress(string serverId, string publicIp, PublicIpAddress publicIpRequestContent, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Put, string.Format(Constants.ServiceUris.Server.RUDPublicIpAddress, Configuration.BaseUri, authentication.AccountAlias, serverId, publicIp), publicIpRequestContent); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Put, string.Format(Constants.ServiceUris.Server.RUDPublicIpAddress, Configuration.BaseUri, authentication.AccountAlias, serverId, publicIp), publicIpRequestContent); var result = await serviceInvoker.Invoke(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; @@ -465,7 +465,7 @@ public async Task SetCpuAndMemory(string serverId, IEnumerable public async Task SetCpuAndMemory(string serverId, IEnumerable operations, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(new HttpMethod("PATCH"), string.Format(Constants.ServiceUris.Server.UpdateResources, Configuration.BaseUri, authentication.AccountAlias, serverId), operations); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(new HttpMethod("PATCH"), string.Format(Constants.ServiceUris.Server.UpdateResources, Configuration.BaseUri, authentication.AccountAlias, serverId), operations); var result = await serviceInvoker.Invoke(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; @@ -491,7 +491,7 @@ public async Task SetDisks(string serverId, IEnumerable public async Task SetDisks(string serverId, IEnumerable operations, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(new HttpMethod("PATCH"), string.Format(Constants.ServiceUris.Server.UpdateResources, Configuration.BaseUri, authentication.AccountAlias, serverId), operations); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(new HttpMethod("PATCH"), string.Format(Constants.ServiceUris.Server.UpdateResources, Configuration.BaseUri, authentication.AccountAlias, serverId), operations); var result = await serviceInvoker.Invoke(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; @@ -566,7 +566,7 @@ public async Task> GetRecentActivity(IEnumerable a Limit = recordCountLimit }; - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Post, string.Format(Constants.ServiceUris.Group.GetRecentActivity, Configuration.BaseUri), requestModel); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Post, string.Format(Constants.ServiceUris.Group.GetRecentActivity, Configuration.BaseUri), requestModel); var result = await serviceInvoker.Invoke>(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; @@ -590,7 +590,7 @@ internal async Task GetServerStatisticsByLink(string uri) /// internal async Task GetServerStatisticsByLink(string uri, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Get, uri); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Get, uri); var result = await serviceInvoker.Invoke(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result; @@ -618,7 +618,7 @@ internal async Task GetServerByLink(string uri) /// internal async Task GetServerByLink(string uri, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Get, uri); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Get, uri); var result = await serviceInvoker.Invoke(httpRequestMessage, cancellationToken).ConfigureAwait(false); result.Authentication = authentication; @@ -644,7 +644,7 @@ internal async Task GetServerCredentialsByLink(string uri) /// internal async Task GetServerCredentialsByLink(string uri, CancellationToken cancellationToken) { - var httpRequestMessage = CreateHttpRequestMessage(HttpMethod.Get, uri); + var httpRequestMessage = CreateAuthorizedHttpRequestMessage(HttpMethod.Get, uri); var result = await serviceInvoker.Invoke(httpRequestMessage, cancellationToken).ConfigureAwait(false); return result;