public static IRockResponse ToRockResponse(this IRestResponse restResponse)
        {
            var response = new RockResponse();

            response.StatusCode   = restResponse.StatusCode;
            response.JsonResponse = restResponse.Content;

            if (restResponse.StatusCode != System.Net.HttpStatusCode.OK)
            {
                response.ErrorMessage = restResponse.ErrorMessage;
            }

            return(response);
        }
        public virtual async Task <IRockResponse <List <T> > > SearchHttp(BaseQO qo)
        {
            using (var http = CreateClient())
            {
                var searchUrl = SearchUrl + "?" + qo.ToQueryString();
                var response  = await http.GetAsync(searchUrl);

                var rockresponse = new RockResponse <List <T> >();

                rockresponse.StatusCode   = response.StatusCode;
                rockresponse.JsonResponse = await response.Content.ReadAsStringAsync();

                rockresponse.Data = JsonConvert.DeserializeObject <List <T> >(rockresponse.JsonResponse);
                return(rockresponse);
            }
        }
        public static IRockResponse <S> ToRockResponse <S>(this IRestResponse <S> restResponse) where S : new()
        {
            var response = new RockResponse <S>();

            response.StatusCode   = restResponse.StatusCode;
            response.JsonResponse = restResponse.Content;

            if ((int)restResponse.StatusCode >= 300)
            {
                response.ErrorMessage = restResponse.ErrorMessage;
            }
            else
            {
                response.Data = restResponse.Data;
            }
            return(response);
        }
        private async Task <IRockResponse <S> > ConvertResponseAsync <S>(HttpResponseMessage response) where S : new()
        {
            var rockResponse = new RockResponse <S> {
                StatusCode   = response.StatusCode,
                JsonResponse = await response.Content.ReadAsStringAsync()
            };

            if (!string.IsNullOrEmpty(rockResponse.JsonResponse) && (int)response.StatusCode > 300)
            {
                var responseError = Newtonsoft.Json.JsonConvert.DeserializeObject <dynamic>(rockResponse.JsonResponse);
                rockResponse.ErrorMessage = responseError.error_message;
            }
            else
            {
                rockResponse.Data = Newtonsoft.Json.JsonConvert.DeserializeObject <S>(rockResponse.JsonResponse);
            }
            return(rockResponse);
        }
        public static IRockResponse <RockCollection <S> > ToRockCollectionResponse <S>(this IRestResponse <List <S> > restResponse, string requestInput = null) where S : new()
        {
            var response = new RockResponse <RockCollection <S> >();

            response.StatusCode   = restResponse.StatusCode;
            response.JsonResponse = restResponse.Content;

            if ((int)restResponse.StatusCode >= 300)
            {
                response.ErrorMessage = restResponse.ErrorMessage;
            }
            else
            {
                if (restResponse.Data != null)
                {
                    var collection = new RockCollection <S>();
                    collection.Items.AddRange(restResponse.Data);
                    response.Data = collection;
                }
            }
            return(response);
        }