Пример #1
0
        public void ReadFromStreamTwice()
        {
            var stream = new MemoryStream();
            var writer = new StreamWriter(stream);

            writer.Write(OriginalFormsString);
            writer.Flush();
            stream.Seek(0, SeekOrigin.Begin);
            IOwinRequest request = new OwinRequest();

            request.Body = stream;
            IFormCollection form = request.ReadFormAsync().Result;

            Assert.Equal("v1", form.Get("q1"));
            Assert.Equal("v2,b", form.Get("Q2"));
            Assert.Equal("v3,v4", form.Get("q3"));
            Assert.Null(form.Get("q4"));
            Assert.Equal("v5,v5", form.Get("Q5"));

            form = request.ReadFormAsync().Result;
            Assert.Equal("v1", form.Get("q1"));
            Assert.Equal("v2,b", form.Get("Q2"));
            Assert.Equal("v3,v4", form.Get("q3"));
            Assert.Null(form.Get("q4"));
            Assert.Equal("v5,v5", form.Get("Q5"));
        }
Пример #2
0
        private static HttpRequestParams GetRequestParams(OwinRequest request)
        {
            var task = request.ReadFormAsync();

            task.Wait();

            return(new HttpRequestParams(request.Query, task.Result));
        }
Пример #3
0
        public void ParseForm()
        {
            IDictionary<string, object> environment = new Dictionary<string, object>();
            environment["owin.RequestBody"] = new MemoryStream(Encoding.ASCII.GetBytes(OriginalFormsString));

            IOwinRequest request = new OwinRequest(environment);

            IFormCollection form = request.ReadFormAsync().Result;
            Assert.Equal("v1", form.Get("q1"));
            Assert.Equal("v2,b", form.Get("Q2"));
            Assert.Equal("v3,v4", form.Get("q3"));
            Assert.Null(form.Get("q4"));
            Assert.Equal("v5,v5", form.Get("Q5"));
        }
Пример #4
0
        public void ParseForm()
        {
            IDictionary <string, object> environment = new Dictionary <string, object>();

            environment["owin.RequestBody"] = new MemoryStream(Encoding.ASCII.GetBytes(OriginalFormsString));

            IOwinRequest request = new OwinRequest(environment);

            IFormCollection form = request.ReadFormAsync().Result;

            Assert.Equal("v1", form.Get("q1"));
            Assert.Equal("v2,b", form.Get("Q2"));
            Assert.Equal("v3,v4", form.Get("q3"));
            Assert.Null(form.Get("q4"));
            Assert.Equal("v5,v5", form.Get("Q5"));
        }
Пример #5
0
 public void ReadFromStream()
 {
     var stream = new MemoryStream();
     var writer = new StreamWriter(stream);
     writer.Write(OriginalFormsString);
     writer.Flush();
     stream.Seek(0, SeekOrigin.Begin);
     IOwinRequest request = new OwinRequest();
     request.Body = stream;
     IFormCollection form = request.ReadFormAsync().Result;
     Assert.Equal("v1", form.Get("q1"));
     Assert.Equal("v2,b", form.Get("Q2"));
     Assert.Equal("v3,v4", form.Get("q3"));
     Assert.Null(form.Get("q4"));
     Assert.Equal("v5,v5", form.Get("Q5"));
 }
Пример #6
0
        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, ".")));
                });
            });
        }
Пример #7
0
        public async Task <INameValueCollection> ReadForm()
        {
            IFormCollection form = await _request.ReadFormAsync().PreserveCulture();

            return(new ReadableStringCollectionWrapper(form));
        }
Пример #8
0
            private static async Task ExecuteAsync(
                IDictionary <string, object> environment,
                IDictionary <string, string> keys, OwinRequest request,
                AsyncHttpRequestHandler handler)
            {
                var response = new OwinResponse(environment);

                var executor = (Func <Task <object> >)(async() =>
                {
                    var form = from w in request.HasForm()
                                         ? (IEnumerable <KeyValuePair <string, string[]> >)(await request.ReadFormAsync().ConfigureAwait(false))
                                         : EmptyForm
                               select w != null ? w[0] : null;

                    return(await handler.Executor(
                               environment,
                               keys,
                               form.ToDictionary()));
                });

                var result = await executor().ConfigureAwait(false);

                if (result != null)
                {
                    await response.WriteAsync(JsonConvert.SerializeObject(result)).ConfigureAwait(false);
                }

                response.StatusCode = handler.StatusCodeGenerator != null
                                    ? handler.StatusCodeGenerator(result)
                                    : (int)HttpStatusCode.OK;
            }