public void CreateClientWrapperParameters_IfSerializerIsSet_ReturnsParametersWithInitializedSerializerAndRequestDataFormat(
            ExecuteApiRequestParameters parameters,
            ISerializer expectedSerializer,
            DataFormat expectedDataFormat)
        {
            var builder = new ApiRestClientBuilder();

            var actual = builder.CreateClientWrapperParameters(It.IsAny <ApiContext>(), It.IsAny <string>(), parameters);

            AssertExtension.AreObjectsValuesEqual(expectedSerializer, actual.RequestDataSerializer);
            Assert.AreEqual(expectedDataFormat, actual.RequestDataFormat);
        }
        public string invokeCommand(RestSharp.Method method, string resource, string parameters, object obj, RestSharp.Serializers.ISerializer serializer, out IList <Parameter> headers)
        {
            string full_resource = resource;

            if (parameters != null)
            {
                full_resource += "?" + parameters;
            }

            RestRequest request = new RestRequest(full_resource, method);

            request.RequestFormat = DataFormat.Xml;
            if (serializer != null)
            {
                request.XmlSerializer = serializer;
            }
            if ((method == Method.POST) || (method == Method.PUT))
            {
                request.AddBody(obj);
            }

            long   unixTimeStamp = GetCurrentUnixTimestampMillis();
            string toSign        = api_access_id + ":" + method.ToString() + ":" + resource + ":" + unixTimeStamp.ToString() + ":" + client.UserAgent;
            var    signature     = sign(secret_key, toSign);

            request.AddHeader("x-esauth-access", api_access_id);
            request.AddHeader("x-esauth-signature", signature);
            request.AddHeader("x-esauth-timestamp", unixTimeStamp.ToString());
            if (additionalHeaders != null)
            {
                foreach (var di in additionalHeaders)
                {
                    request.AddHeader(di.Key, di.Value);
                }
            }

            //request.AddHeader("x-es-with-perms", "false");

            var response = client.Execute(request);

            headers = response.Headers;
            return(response.Content); // no need to aggregate the responses. simply return the non-paginated content.
        }