private void compileRequestParams(Configuration configuration)
        {
            HttpWebRequest request;

            if (configuration.Method == "POST")
            {
                request = (HttpWebRequest)WebRequest.Create(RequestUri);
                request.Method = configuration.Method;

                request.Headers.Add(Configuration.Headers["AppKey"], configuration.AppKey);
                request.Headers.Add(Configuration.Headers["AppId"], configuration.AppId);
                request.UserAgent = configuration.UserAgent;

                var postData = Parameters.Aggregate("",
                  (memo, pair) =>
                     "&" + pair.First().Key + "=" + Uri.EscapeDataString(pair.First().Value) + memo
                  ).Substring(1);

                var data = Encoding.UTF8.GetBytes(postData);

                request.ContentType = "application/x-www-form-urlencoded";
                request.ContentLength = data.Length;

                using (var stream = request.GetRequestStream())
                {
                    stream.Write(data, 0, data.Length);
                    stream.Close();
                }
            }
            else if (configuration.Method == "GET")
            {
                var query = Parameters.Aggregate("",
                  (memo, pair) =>
                     "&" + pair.First().Key + "=" + Uri.EscapeDataString(pair.First().Value) + memo
                     );

                if (query != null && query.Length > 2)
                    query = query.Substring(1);

                if (Parameters.Count > 0)
                    request = (HttpWebRequest)WebRequest.Create(RequestUri + "?" + query);
                else
                    request = (HttpWebRequest)WebRequest.Create(RequestUri);
                request.Method = configuration.Method;

                request.Headers.Add(Configuration.Headers["AppKey"], configuration.AppKey);
                request.Headers.Add(Configuration.Headers["AppId"], configuration.AppId);
                request.UserAgent = configuration.UserAgent;
            }
            else
            {
                throw new ArgumentException("Method should be GET or POST.");
            }

            Request = request;
        }
 public UnsupervisedClassify(Configuration config)
     : base(config)
 {
 }
 public Extract(Configuration config)
     : base(config)
 {
 }
 public Summarize(Configuration config)
     : base(config)
 {
 }
 public Sentiment(Configuration config)
     : base(config)
 {
 }
 public Microformats(Configuration config)
     : base(config)
 {
 }
 public Classify(Configuration config)
     : base(config)
 {
 }
 public Connection(string endpoint, List<Dictionary<string, string>> parameters, Configuration configuration)
 {
     RequestUri = configuration.BaseUri + endpoint;
     Parameters = parameters;
     compileRequestParams(configuration);
 }
 public Language(Configuration config)
     : base(config)
 {
 }
 public Combined(Configuration config)
     : base(config)
 {
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="Client"/> class.
 /// </summary>
 /// <param name="appId">A key which you can get it from Aylien developer website</param>
 /// <param name="appKey">A key which you can get it from Aylien developer website</param>
 public Client(string appId, string appKey)
 {
     configuration = new Configuration(appId, appKey);
 }
 public Related(Configuration config)
     : base(config)
 {
 }
 public Concepts(Configuration config)
     : base(config)
 {
 }
 public ImageTags(Configuration config)
     : base(config)
 {
 }
 public Entities(Configuration config)
     : base(config)
 {
 }