public void WritesWork() { var body = new MemoryStream(4); var expectedBody = new byte[] { 65, 66, 67, 68 }; var cts = new CancellationTokenSource(); var env = new Dictionary <string, object>(StringComparer.Ordinal) { { "owin.CallCancelled", cts.Token }, { "owin.ResponseBody", body }, }; var res = new OwinResponse(env); res.Write("AB"); res.WriteAsync("CD").Wait(); body.GetBuffer().ShouldBe(expectedBody); res.CallCancelled.ShouldBe(cts.Token); }
public void Configuration(IAppBuilder app) { app.UseDispatcher(dispatcher => { // list all the things: dispatcher.Get("/things", (environment, next) => { var response = new OwinResponse(environment) { StatusCode = 200, ContentType = "text/plain" }; response.Write("# All the things:"); response.Write(Environment.NewLine); response.Write(Environment.NewLine); foreach (var thing in _things.Values) { response.Write(String.Concat("- Thing #", thing.Id, ": ", thing.Name)); response.Write(Environment.NewLine); } return(Task.FromResult((object)null)); }); // create a new thing: dispatcher.Post("/things", async(environment, next) => { var request = new OwinRequest(environment); var form = await request.ReadFormAsync(); var response = new OwinResponse(environment); var thingName = form["name"]; if (thingName == null) { response.StatusCode = 400; await response.WriteAsync("The thing to POST is missing a name."); return; } _things.Add(++_lastThingId, new Thing { Id = _lastThingId, Name = thingName }); var uri = String.Concat("/things/", _lastThingId); response.StatusCode = 201; response.Headers["Location"] = uri; response.ContentType = "text/plain"; await response.WriteAsync(uri); }); // list all the things: dispatcher.Get("/things/{id}", (environment, @params, next) => { var response = new OwinResponse(environment); int id; if (!int.TryParse(@params.id, out id)) { response.StatusCode = 404; return(response.WriteAsync("Not found.")); } if (!_things.ContainsKey(id)) { response.StatusCode = 404; return(response.WriteAsync("Not found.")); } var thing = _things[id]; response.StatusCode = 200; response.ContentType = "text/plain"; return(response.WriteAsync(String.Concat("Thing #", thing.Id, " is ", thing.Name, "."))); }); }); }
public void WritesWork() { var body = new MemoryStream(4); var expectedBody = new byte[] { 65, 66, 67, 68 }; var cts = new CancellationTokenSource(); var env = new Dictionary<string, object>(StringComparer.Ordinal) { { "owin.CallCancelled", cts.Token }, { "owin.ResponseBody", body }, }; var res = new OwinResponse(env); res.Write("AB"); res.WriteAsync("CD").Wait(); body.GetBuffer().ShouldBe(expectedBody); res.CallCancelled.ShouldBe(cts.Token); }