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); }
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")); }
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"); }