/// <summary>
        /// Generates a secured and public API Key from a query parameters and an optional user token identifying the current user
        /// </summary>
        /// <param name="privateApiKey">Your private API Key</param>
        /// <param name="query">The query parameters applied to the query (used as security)</param>
        /// <param name="userToken">An optional token identifying the current user</param>
        /// <returns></returns>
        public string GenerateSecuredApiKey(String privateApiKey, Query query, String userToken = null)
        {
            if (userToken != null)
            {
                query.SetUserToken(userToken);
            }
            string queryStr = query.GetQueryString();

            byte[] content = System.Text.Encoding.UTF8.GetBytes(string.Format("{0}{1}", Hmac(privateApiKey, queryStr), queryStr));
            return(System.Convert.ToBase64String(content));
        }
 /// <summary>
 /// Generates a secured and public API Key from a query parameters and an optional user token identifying the current user
 /// </summary>
 /// <param name="privateApiKey">Your private API Key</param>
 /// <param name="query">The query parameters applied to the query (used as security)</param>
 /// <param name="userToken">An optional token identifying the current user</param>
 /// <returns></returns>
 public string GenerateSecuredApiKey(String privateApiKey, Query query, String userToken = null)
 {
     if (userToken != null)
         query.SetUserToken(userToken);
     string queryStr = query.GetQueryString();
     byte[] content = System.Text.Encoding.UTF8.GetBytes(string.Format("{0}{1}", Hmac(privateApiKey, queryStr), queryStr));
     return System.Convert.ToBase64String(content);
 }