Exemplo n.º 1
0
        /// <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);
        }