예제 #1
0
        private void HandleHTTPContext(MyHttpListenerContext ctx)
        {
            var req = ctx.Request;
            var res = ctx.Response;

            res.AppendHeader("Pragma", "no-cache");
            res.AppendHeader("Cache-Control", "no-cache");

            string mode = "";

            if (req.QueryString.AllKeys.Contains("mode"))
            {
                mode = req.QueryString["mode"];
            }

            try
            {
                HTTPRequestHandler handler = ReturnDefault;
                if (HTTPHandlers.ContainsKey(mode))
                {
                    handler = HTTPHandlers[mode];
                }
                handler(ctx);
            }
            catch (Exception ex)
            {
                Logger.Log(ex);
            }
            finally
            {
//                res.Close();
            }
        }
예제 #2
0
        /// <summary>
        /// This method fetchs information of a specific content type.
        /// </summary>
        /// <example>
        /// <code>
        /// ContentstackClient stack = new ContentstackClinet(&quot;blt5d4sample2633b&quot;, &quot;blt6d0240b5sample254090d&quot;, &quot;stag&quot;);
        /// ContentType contenttype = stack.ContentType("contentType_name");
        /// var result = await contenttype.Fetch();
        /// </code>
        /// </example>
        /// <returns>The Content-Type Schema Object.</returns>
        public async Task <JObject> Fetch()
        {
            Dictionary <String, Object> headers   = GetHeader(_Headers);
            Dictionary <String, object> headerAll = new Dictionary <string, object>();
            Dictionary <string, object> mainJson  = new Dictionary <string, object>();

            //Dictionary<string, object> urlQueries = new Dictionary<string, object>();

            if (headers != null && headers.Count() > 0)
            {
                foreach (var header in headers)
                {
                    headerAll.Add(header.Key, (String)header.Value);
                }

                if (headers.ContainsKey("environment"))
                {
                    UrlQueries.Add("environment", headers["environment"]);
                    //Url = Url + "?environment=" + headers["environment"];
                }
                else if (headers.ContainsKey("environment_uid"))
                {
                    UrlQueries.Add("environment_uid", headers["environment_uid"]);
                    //Url = Url + "?environment_uid=" + headers["environment_uid"];
                }
                else
                {
                    mainJson.Add("environment", this.StackInstance.config.Environment);
                }
            }

            foreach (var kvp in UrlQueries)
            {
                mainJson.Add(kvp.Key, kvp.Value);
            }
            try
            {
                HTTPRequestHandler RequestHandler = new HTTPRequestHandler();
                var outputResult = await RequestHandler.ProcessRequest(_Url, headers, mainJson);

                JObject data         = JsonConvert.DeserializeObject <JObject>(outputResult.Replace("\r\n", ""), ContentstackConvert.JsonSerializerSettings);
                JObject contentTypes = (Newtonsoft.Json.Linq.JObject)data["content_type"];
                return(contentTypes);
            }
            catch (Exception ex)
            {
                throw GetContentstackError(ex);
            }
        }
        private async Task <SyncStack> GetResultAsync(string Init = "false", string ContentTypeUid = null, DateTime?StartFrom = null, string SyncToken = null, string PaginationToken = null, string Lang = null)
        {
            //mainJson = null;
            Dictionary <string, object> mainJson = new Dictionary <string, object>();

            if (Init != "false")
            {
                mainJson.Add("init", "true");
                mainJson.Add("environment", config.Environment);
            }
            if (StartFrom != null)
            {
                DateTime startFrom = StartFrom ?? DateTime.MinValue;
                mainJson.Add("start_from", startFrom.ToString("yyyy-MM-dd"));
            }
            if (SyncToken != null)
            {
                mainJson.Add("sync_token", SyncToken);
            }
            if (PaginationToken != null)
            {
                mainJson.Add("pagination_token", PaginationToken);
            }
            if (ContentTypeUid != null)
            {
                mainJson.Add("content_type_uid", ContentTypeUid);
            }
            if (Lang != null)
            {
                mainJson.Add("locale", Lang);
            }
            try
            {
                HTTPRequestHandler requestHandler = new HTTPRequestHandler();
                string             js             = await requestHandler.ProcessRequest(_SyncUrl, _LocalHeaders, mainJson);

                SyncStack stackSyncOutput = JsonConvert.DeserializeObject <SyncStack>(js);
                return(stackSyncOutput);
            }
            catch (Exception ex)
            {
                throw GetContentstackError(ex);
            }
        }
예제 #4
0
        /// <summary>
        /// Creates a new instance
        /// </summary>
        /// <param name="prefixes">HTTP(S) listening prefixes</param>
        /// <param name="func">Listening handling function</param>
        public HTTPServer(string[] prefixes, HTTPRequestHandler func)
        {
            if (!HttpListener.IsSupported)
            {
                "Needs Windows XP SP2, Server 2003 or later.".Err();

                throw new NotSupportedException();
            }

            if ((prefixes?.Length ?? 0) == 0)
            {
                throw new ArgumentException("prefixes");
            }

            foreach (string s in prefixes)
            {
                _listener.Prefixes.Add(s);

                $"Listening on '{s}' ...".Msg();
            }

            _rfunc = func ?? throw new ArgumentException(nameof(func));
            _listener.Start();
        }
예제 #5
0
 public void AddHandler(string id, HTTPRequestHandler handler)
 {
     m_requestHandlers.Add(id, handler);
 }
예제 #6
0
 /// <summary>
 /// Creates a new instance
 /// </summary>
 /// <param name="method">Listening handling function</param>
 /// <param name="prefixes">HTTP(S) listening prefixes</param>
 public HTTPServer(HTTPRequestHandler method, params string[] prefixes)
     : this(prefixes, method)
 {
 }