37 lines
1.3 KiB
C#
37 lines
1.3 KiB
C#
using System;
|
|
using ln.types.btree;
|
|
using System.Collections.Generic;
|
|
using System.Collections;
|
|
|
|
namespace ln.http
|
|
{
|
|
public class HttpHeaders : IEnumerable<HttpHeader>
|
|
{
|
|
MappingBTree<string, HttpHeader> headers = new MappingBTree<string, HttpHeader>((value) => value.Name);
|
|
|
|
public HttpHeaders()
|
|
{
|
|
}
|
|
|
|
public HttpHeader this[string headerName] => headers[headerName.ToUpper()];
|
|
public bool Contains(string headerName) => headers.ContainsKey(headerName.ToUpper());
|
|
|
|
public void Add(String headerName, String headerValue) => Add(new HttpHeader(headerName, headerValue));
|
|
public void Add(HttpHeader httpHeader) => headers.Add(httpHeader);
|
|
|
|
public void Remove(HttpHeader httpHeader) => headers.Remove(httpHeader);
|
|
public void Remove(string headerName) => headers.RemoveKey(headerName.ToUpper());
|
|
|
|
public void Set(String headerName, String headerValue)
|
|
{
|
|
if (headers.ContainsKey(headerName))
|
|
Remove(headerName);
|
|
|
|
Add(new HttpHeader(headerName, headerValue));
|
|
}
|
|
|
|
public IEnumerator<HttpHeader> GetEnumerator() => headers.Values.GetEnumerator();
|
|
IEnumerator IEnumerable.GetEnumerator() => headers.Values.GetEnumerator();
|
|
}
|
|
}
|