protected T ExecuteForFilter <T>(RestRequest Request) where T : new()
        {
            var client = new RestClient();

            client.BaseUrl = new Uri(this.BaseUrl);
            //client.Authenticator = new HttpBasicAuthenticator(this.Account, this.Password);
            Request.AddParameter("ws_key", this.Account, ParameterType.QueryString); // used on every request
            client.ClearHandlers();
            client.AddHandler("text/xml", new PrestaSharpDeserializer());
            var response = client.Execute <T>(Request);

            if (response.StatusCode == HttpStatusCode.InternalServerError ||
                response.StatusCode == HttpStatusCode.ServiceUnavailable ||
                response.StatusCode == HttpStatusCode.BadRequest ||
                response.StatusCode == HttpStatusCode.Unauthorized ||
                response.StatusCode == HttpStatusCode.MethodNotAllowed ||
                response.StatusCode == HttpStatusCode.Forbidden ||
                response.StatusCode == HttpStatusCode.NotFound ||
                response.StatusCode == 0)
            {
                string RequestParameters = Environment.NewLine;
                foreach (Parameter Parameter in Request.Parameters)
                {
                    RequestParameters += Parameter.Value + Environment.NewLine + Environment.NewLine;
                }
                var Exception = new PrestaSharpException(RequestParameters + response.Content, response.ErrorMessage, response.StatusCode, response.ErrorException);

                throw Exception;
            }
            return(response.Data);
        }
        protected byte[] ExecuteForImage(RestRequest Request)
        {
            var client = new RestClient();

            client.BaseUrl = new Uri(this.BaseUrl);
            //client.Authenticator = new HttpBasicAuthenticator(this.Account, this.Password);
            Request.AddParameter("ws_key", this.Account, ParameterType.QueryString);
            var response = client.Execute(Request);

            if (response.StatusCode == HttpStatusCode.InternalServerError ||
                response.StatusCode == HttpStatusCode.ServiceUnavailable ||
                response.StatusCode == HttpStatusCode.BadRequest ||
                response.StatusCode == HttpStatusCode.Unauthorized ||
                response.StatusCode == HttpStatusCode.MethodNotAllowed ||
                response.StatusCode == HttpStatusCode.Forbidden ||
                response.StatusCode == HttpStatusCode.NotFound ||
                response.StatusCode == 0)
            {
                string RequestParameters = Environment.NewLine;
                foreach (RestSharp.Parameter Parameter in Request.Parameters)
                {
                    RequestParameters += Parameter.Value + Environment.NewLine + Environment.NewLine;
                }
                var Exception = new PrestaSharpException(RequestParameters + response.Content, response.ErrorMessage, response.StatusCode, response.ErrorException);
                throw Exception;
            }
            return(response.RawBytes);
        }