コード例 #1
0
        static void Main(string[] args)
        {
            var messageFile = Path.GetFullPath("messages.txt");

            if (!File.Exists(messageFile))
            {
                File.Create(messageFile).Close();
            }

            var messages = new List <string>();

            messages.AddRange(File.ReadAllLines(messageFile));

            var server = new HttpServer(80);

            server.AddExactRoute("GET", "/", (request, response) =>
            {
                response.RedirectLocation = "/web/JSREST.html";
            });

            server.AddExactRoute("PUT", "/messages", (request, response) =>
            {
                var text = $"[{request.ClientIP}] {request.ReadBodyText()}";

                if (text.Length > 500)
                {
                    text = "** Messages greater than 500 characters are not allowed. **";
                }

                // prevent clashing of user requests (messages) sent at the same time
                lock (messageFile) File.AppendAllText(messageFile, text + "\n");

                messages.Add(text);
            });

            server.AddExactRoute("GET", "/messages", (request, response) =>
            {
                response.WriteBodyJson(messages);
            });

            server.AddStaticDirectory("/web", @"C:\Users\Fox\Documents\Visual Studio 2019\Projects\JavaScript\JS REST API C#");

            server.Start();

            Thread.Sleep(Timeout.Infinite);
        }
コード例 #2
0
        static void Main(string[] args)
        {
            var server = new HttpServer(80);

            server.AddExactRoute("GET", "/hello", (request, response) =>
            {
                response.WriteBodyText("Hello World");
            });

            server.AddExactRoute("GET", "/time", (request, response) =>
            {
                var time             = DateTime.Now.ToString();
                response.ContentType = "text/html; charset=UTF-8";
                response.WriteBodyText(
                    "<html>" +
                    "<head><meta http-equiv=\"refresh\" content=\"1\"></head>" +
                    $"<body><h1>{time}</h1></body>" +
                    "</html>");
            });

            server.AddExactRoute("GET", "/browser", (request, response) =>
            {
                var userAgent = request.Headers["user-agent"];

                var browser =
                    userAgent.IndexOf("Chrome") >= 0 ? "Chrome" :
                    userAgent.IndexOf("Firefox") >= 0 ? "Firefox" :
                    "Other";

                response.ContentType = "text/html; charset=UTF-8";
                response.WriteBodyText($"<h1>{browser}</h1>");
            });

            server.SetDefaultRoute((request, response) =>
            {
                response.ContentType = "image/png";
                response.WriteBodyData(File.ReadAllBytes("hooty.png"));
            });

            server.Start();
            Thread.Sleep(Timeout.Infinite);
        }
コード例 #3
0
        static void Main(string[] args)
        {
            var server = new HttpServer(80);
            var db     = new RedisDb("10.0.2.7,password=eRHrHGTTf6vDnvKFkqDV3Mg2NLKhbqM41mMmTIoy");         //would be in a root-read-only config file

            server.AddExactRoute("GET", "/test", (request, response) =>
            {
                response.WriteBodyText("OK.");
            });

            server.AddExactRoute("GET", "/messages", (request, response) =>
            {
                var messages = db.ListGet("chatApp", "", "messages");

                var outArray = new JArray();
                foreach (var message in messages)
                {
                    outArray.Add(JObject.Parse(message));
                }

                response.WriteBodyJson(outArray);
            });

            server.AddExactRoute("GET", "/message", (request, response) =>
            {
                var outObj = new JObject();
                foreach (var param in request.QueryParams)
                {
                    outObj[param.Key] = param.Value;
                }

                db.ListInsertAfter("chatApp", "", "messages", outObj.ToString());
            });

            server.AddStaticFile("/", "FrontEnd/index.html");

            server.Start();
            Thread.Sleep(Timeout.Infinite);
        }
コード例 #4
0
        static void Main()
        {
            var form = new Form1();

            var server = new HttpServer(80);

            server.AddExactRoute("GET", "/clock.png", (request, response) =>
            {
                response.ContentType = "image/png";

                if (form.screenshot != null)
                {
                    response.WriteBodyData(form.screenshot);
                }
            });

            server.AddStaticFile("/clock.html", "clock.html");

            server.Start();

            Application.EnableVisualStyles();
            Application.Run(form);
        }