protected virtual IRequest ConstructRequest(Uri uri, string method, Dictionary <string, object> parameters, bool signed)
        {
            var uriString = uri.ToString();

            if (parameters != null)
            {
                if (!uriString.EndsWith("?"))
                {
                    uriString += "?";
                }

                uriString += $"{string.Join("&", parameters.Select(s => $"{s.Key}={s.Value}"))}";
            }

            if (authProvider != null)
            {
                uriString = authProvider.AddAuthenticationToUriString(uriString, signed);
            }

            var request = RequestFactory.Create(uriString);

            request.Method = method;

            if (authProvider != null)
            {
                request = authProvider.AddAuthenticationToRequest(request, signed);
            }

            return(request);
        }
        protected virtual IRequest ConstructRequest(Uri uri, string method, Dictionary <string, object> parameters, bool signed)
        {
            var uriString = uri.ToString();

            if (parameters != null)
            {
                if (!uriString.EndsWith("?"))
                {
                    uriString += "?";
                }

                var arraysParameters = parameters.Where(p => p.Value.GetType().IsArray).ToList();
                foreach (var arrayEntry in arraysParameters)
                {
                    uriString += $"{string.Join("&", ((object[])arrayEntry.Value).Select(v => $"{arrayEntry.Key}[]={v}"))}&";
                }

                uriString += $"{string.Join("&", parameters.Where(p => !p.Value.GetType().IsArray).Select(s => $"{s.Key}={s.Value}"))}";
                uriString  = uriString.TrimEnd('&');
            }

            if (authProvider != null)
            {
                uriString = authProvider.AddAuthenticationToUriString(uriString, signed);
            }

            var request = RequestFactory.Create(uriString);

            request.Method = method;

            if (authProvider != null)
            {
                request = authProvider.AddAuthenticationToRequest(request, signed);
            }

            return(request);
        }