/// <summary> /// Invoke client api(s) to serailize the response content in particular T object. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="apiRequest"></param> /// <returns></returns> public async Task <ApiResponse> Invoke <T>(ApiRequest apiRequest) { var response = await GetResponseAsync(apiRequest); var content = await response.Content.ReadAsStringAsync(); var errorCode = GetResponseCode(content); var apiResponse = new ApiResponse(); var isEmptyResponseCode = string.IsNullOrWhiteSpace(errorCode); if (errorCode == Convert.ToString(0)) { apiResponse.Result = JsonConvert.DeserializeObject <T>(content); apiResponse.Success = true; } else { apiResponse.Success = false; apiResponse.Result = default(T); apiResponse.AddErrors(isEmptyResponseCode ? content : UtilityHelper.GetEnumDescription((ErrorResponseCode)int.Parse(errorCode))); } apiResponse.ResponseCode = isEmptyResponseCode ? response.StatusCode.ToString() : Enum.Parse(typeof(ErrorResponseCode), errorCode).ToString(); return(apiResponse); }