Example #1
0
        static void HandleJSONRequest(HttpListenerContext context)
        {
            StreamWriter outWriter;
            Dictionary <string, string[]> parameters = new Dictionary <string, string[]> ();

            for (int x = 0; x < context.Request.QueryString.Count; x++)
            {
                var key    = context.Request.QueryString.GetKey(x);
                var values = context.Request.QueryString.GetValues(x);

                if (key == null && !parameters.ContainsKey(values.FirstOrDefault()))
                {
                    parameters.Add(values.FirstOrDefault().Trim().ToLower(), values);
                }
                else
                {
                    parameters.Add(key.Trim().ToLower(), values);
                }
            }

            JSONObject result = null;

            try
            {
                result = JSONRequestManager.HandleRequest(context.Request.Url.AbsolutePath, parameters);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            if (result != null)
            {
                string json = result.ToJSON();

                context.Response.ContentLength64 = json.Length;
                context.Response.Headers.Add(HttpResponseHeader.ContentType, result.ContentType);

                context.Response.AddHeader
                    ("content-disposition",
                    string.Format("attachment;filename={0}.{1}",
                                  context.Request.Url.AbsolutePath.Replace(".json", ""),
                                  result.Extension));

                outWriter = new StreamWriter(context.Response.OutputStream);
                outWriter.Write(json);
                outWriter.Flush();
            }
            else
            {
                context.Response.StatusCode = 404;
            }
        }