Ejemplo n.º 1
0
            public void UriAndRest()
            {
                var key = "Accept";
                var req = HttpRequest.Create(new Uri("http://google.com"),
                                             HttpMethod.Get,
                                             ImmutableDictionary <string, HttpHeader> .Empty.Add(key, HttpHeader.Create(key, "*")),
                                             Maybe.Nothing <IEnumerable <byte> >());

                Assert.AreEqual(new Uri("http://google.com"), req.Endpoint);
                Assert.AreEqual(HttpMethod.Get, req.HttpMethod);
                Assert.AreEqual("*", req.HttpHeaders.TryFind(kv => kv.Key == key).Map(kv => kv.Value.Value).ValueOr("FAIL"));
                Assert.AreEqual(Maybe.Nothing <IEnumerable <byte> >(), req.Body);
            }
Ejemplo n.º 2
0
            public void AddHeaders()
            {
                var key = "Accept";
                var a   = HttpRequest.Create("http://google.com", HttpMethod.Get);
                var b   = a.With(ImmutableDictionary <string, HttpHeader> .Empty.Add(key, HttpHeader.Create(key, "*")));

                Assert.AreEqual("*", b.HttpHeaders.TryFind(kv => kv.Key == key).Map(kv => kv.Value.Value).ValueOr("FAIL"));
            }
Ejemplo n.º 3
0
        public int ReadHeader(byte[] buffer, int offset, out HttpHeader header)
        {
            ResetContentStream();

            int start   = offset;
            int newLine = 0;

            Stream inner = this.inner;

            do
            {
                try
                {
                    int read = inner.Read(buffer, offset, 1);

                    if (read > 0)
                    {
                        switch (buffer[offset])
                        {
                        case 13:     //\r
                            break;

                        case 10:     //\n
                            newLine++;
                            break;

                        case 0:      //\0
                            newLine = 0;
                            break;

                        default:
                            newLine = 0;
                            break;
                        }

                        offset++;

                        if (newLine == 2)
                        {
                            header = this.header = HttpHeader.Create(this.Encoding.GetString(buffer, 0, offset));

                            ProcessHeader(this.header);

                            return(offset - start);
                        }
                    }
                    else
                    {
                        break;
                    }
                }
                catch (Exception e)
                {
                    break;
                }
            }while (true);

            if (offset - start == 0)
            {
                header = null;
                return(0);
            }

            throw new Exception("No headers available");
        }