public QueryParamList GenerateAuthParameters(RestRequest request)
		{
			var parameters = new QueryParamList();
			parameters.Add("access_key", request.AccessKey);
			if (!string.IsNullOrEmpty(request.FactoryId))
			{
				parameters.Add("cloud_id", request.FactoryId);
			}
			parameters.Add("timestamp", Uri.EscapeDataString(GetTimestamp(request.TimeStamp)));

			return parameters;
		}
		public string GenerateSignature(RestRequest request, QueryParamList parameters)
		{
			if (request == null) { throw new ArgumentNullException("request"); }
			var sb = new StringBuilder();
			sb.Append(Enum.GetName(typeof(RestMethod), request.Method).ToUpperInvariant());
			sb.Append("\n");
			sb.Append(request.ApiHost);
			sb.Append("\n");
			sb.Append("/" + request.EndpointName);
			sb.Append("\n");
			sb.Append(parameters.Concat());
			var toSign = sb.ToString();

			return GetHmacSha256(toSign, request.SecretKey);
		}
		private RestRequest CreateRequest(RestMethod method, string endpoint, object data = null, QueryParamList parameters = null, string factoryId = null)
		{
			var access = _apiAccess;

			var request = new RestRequest();
			request.Method = method;
			request.Endpoint = endpoint;
			request.TimeStamp = DateTime.Now;
			request.FactoryId = factoryId;
			request.Data = data;
			request.Params = parameters;
			request.ApiHost = access.Host;
			request.ApiVersion = access.Version;
			request.ApiPort = access.Port;
			request.AccessKey = access.AccessKey;
			request.SecretKey = access.SecretKey;

			return request;
		}