コード例 #1
0
ファイル: DefaultPage.cs プロジェクト: ArloL/gate
        public static AppDelegate App()
        {
            return (env, result, fault) =>
            {
                var request = new Request(env);
                var response = new Response(result);

                if (request.Path == "/")
                {
                    response.Status = "200 OK";
                    response.ContentType = "text/html";
                    response.Start(() =>
                    {
                        response.Write("<h1>Sample.App</h1>");
                        response.Write("<p><a href='{0}/wilson/'>Wilson</a></p>", request.PathBase);
                        response.Write("<p><a href='{0}/wilsonasync/'>Wilson (async)</a></p>", request.PathBase);
                        response.Write("<p><a href='{0}/nancy/'>Nancy</a></p>", request.PathBase);
                        response.Write("<p><a href='{0}/fileupload'>File Upload</a></p>", request.PathBase);
                        response.End();
                    });
                }
                else
                {
                    NotFound.Call(env, result, fault);
                }
            };
        }
コード例 #2
0
ファイル: DefaultPageExecutor.cs プロジェクト: anurse/Edge
 private static async Task<Response> ExecuteCore(IEdgePage page, Request request, ITrace tracer)
 {
     Response resp = new Response(200);
     resp.Start();
     await page.Run(request, resp);
     resp.End();
     return resp;
 }
コード例 #3
0
ファイル: WorkerRole.cs プロジェクト: tikrimi/Demo
        public override void Run()
        {
            AppDelegate app = (env, result, fault) =>
            {
                var response = new Response(result);
                string message = string.Format("Instance Id : {0}, Counter value : {1}", RoleEnvironment.CurrentRoleInstance.Id, _counter);
                response.Headers.SetHeader("Content-Length", message.Length.ToString());
                response.Write(message);
                response.End();
            };

            ServerFactory.Create(app, 1234, null);

            while (true)
            {
                Thread.Sleep(10000);
                this._counter++;
            }
        }
コード例 #4
0
        public static IAppBuilder UseDirect(this IAppBuilder builder, Func<Request, Response, Task> app)
        {
            return builder.UseFunc<AppFunc>(next => environment =>
            {
                var req = new Request(environment);
                var resp = new Response(environment)
                {
                    Next = () => next(environment)
                };

                app.Invoke(req, resp)
                    .Then(() => resp.EndAsync())
                    .Catch(caught =>
                    {
                        resp.End(caught.Exception);
                        return caught.Handled();
                    });
                return resp.Task;
            });
        }
コード例 #5
0
        public static IAppBuilder UseDirect(this IAppBuilder builder, Func<Request, Response, Task> app)
        {
            return builder.Use<AppDelegate>(next => call =>
            {
                var req = new Request(call);
                var resp = new Response
                {
                    Next = () => next(call)
                };

                app.Invoke(req, resp)
                    .Then(() => resp.End())
                    .Catch(caught =>
                    {
                        resp.Error(caught.Exception);
                        return caught.Handled();
                    });
                return resp.GetResultAsync();
            });
        }
コード例 #6
0
ファイル: WebHost.cs プロジェクト: sunilrav/pretzel
        /// <summary>
        /// Send data back to the user
        /// </summary>
        /// <param name="result">Result delegate from server-callback</param>
        /// <param name="bytes">byte-array to send</param>
        private void SendText(ResultDelegate result, IDictionary<string, object> env, string text, int httpCode = 200)
        {
            Response response = new Response(result);
            Request request = new Request(env);

            string requestString = (string)env[OwinConstants.RequestPath];

            response.ContentType = requestString.MimeType();

            response.Write(text);

            response.End();
        }
コード例 #7
0
ファイル: WebHost.cs プロジェクト: sunilrav/pretzel
        /// <summary>
        /// Send data back to the user
        /// </summary>
        /// <param name="result">Result delegate from server-callback</param>
        /// <param name="bytes">byte-array to send</param>
        private void SendData(ResultDelegate result, IDictionary<string, object> env, byte[] data)
        {
            Response response = new Response(result);
            Request request = new Request(env);

            string requestString = (string)env[OwinConstants.RequestPath];

            response.ContentType = requestString.MimeType();
            response.Headers["Content-Range"] = new string[] { "bytes 0-" + (data.Length - 1).ToString() };
            response.Headers["Content-Length"] = new string[] { data.Length.ToString() };

            response.Write(new ArraySegment<byte>(data));

            response.End();
        }
コード例 #8
0
ファイル: WebHost.cs プロジェクト: shiftkey/pretzel
 private void SendText(ResultDelegate result, IDictionary<string, object> env, string text)
 {
     var requestString = (string)env[OwinConstants.RequestPath];
     var response = new Response(result) { ContentType = requestString.MimeType() };
     response.Write(text);
     response.End();
 }
コード例 #9
0
ファイル: WebHost.cs プロジェクト: shiftkey/pretzel
        private void SendData(ResultDelegate result, IDictionary<string, object> env, byte[] data)
        {
            var requestString = (string)env[OwinConstants.RequestPath];

            var response = new Response(result) { ContentType = requestString.MimeType() };
            response.Headers["Content-Range"] = new[] { string.Format("bytes 0-{0}", (data.Length - 1)) };
            response.Headers["Content-Length"] = new[] { data.Length.ToString(CultureInfo.InvariantCulture) };
            response.Write(new ArraySegment<byte>(data));
            response.End();
        }
コード例 #10
0
ファイル: KillScreenMiddleware.cs プロジェクト: anurse/Edge
        private ResultParameters HandleException(Exception ex)
        {
            // Run the adapters
            ErrorSummary details = null;
            foreach (IExceptionAnalyzer analyzer in Analyzers)
            {
                details = analyzer.Analyze(ex);
                if (details != null)
                {
                    break;
                }
            }

            if (details == null)
            {
                details = GenerateNoProcessorsError(ex);
            }

            // Generate the HTML
            ErrorPageBuilder builder = new ErrorPageBuilder(details);

            Response resp = new Response(details.StatusCode);
            resp.Start();
            resp.ReasonPhrase = details.ReasonPhrase;
            resp.ContentType = "text/html";

            StringBuilder sb = new StringBuilder();
            using (StringWriter w = new StringWriter(sb))
            {
                builder.Write(w);
            }
            resp.Write(sb.ToString());
            resp.End();
            return resp.GetResultAsync().Result; //Good idea? Probably not...
        }
コード例 #11
0
 private void App(Request req, Response res)
 {
     res.ContentType = "text/plain";
     res.Write("You did a {0} at {1}", req.Method, req.Path);
     res.End();
 }