aspnetcore/src/Microsoft.AspNet.Http.Exten.../RequestHeaders.cs

291 lines
7.3 KiB
C#

// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Framework.Internal;
using Microsoft.Net.Http.Headers;
namespace Microsoft.AspNet.Http.Headers
{
public class RequestHeaders
{
public RequestHeaders([NotNull] IHeaderDictionary headers)
{
Headers = headers;
}
public IHeaderDictionary Headers { get; private set; }
public IList<MediaTypeHeaderValue> Accept
{
get
{
return Headers.GetList<MediaTypeHeaderValue>(HeaderNames.Accept);
}
set
{
Headers.SetList(HeaderNames.Accept, value);
}
}
public IList<StringWithQualityHeaderValue> AcceptCharset
{
get
{
return Headers.GetList<StringWithQualityHeaderValue>(HeaderNames.AcceptCharset);
}
set
{
Headers.SetList(HeaderNames.AcceptCharset, value);
}
}
public IList<StringWithQualityHeaderValue> AcceptEncoding
{
get
{
return Headers.GetList<StringWithQualityHeaderValue>(HeaderNames.AcceptEncoding);
}
set
{
Headers.SetList(HeaderNames.AcceptEncoding, value);
}
}
public IList<StringWithQualityHeaderValue> AcceptLanguage
{
get
{
return Headers.GetList<StringWithQualityHeaderValue>(HeaderNames.AcceptLanguage);
}
set
{
Headers.SetList(HeaderNames.AcceptLanguage, value);
}
}
public CacheControlHeaderValue CacheControl
{
get
{
return Headers.Get<CacheControlHeaderValue>(HeaderNames.CacheControl);
}
set
{
Headers.Set(HeaderNames.CacheControl, value);
}
}
public ContentDispositionHeaderValue ContentDisposition
{
get
{
return Headers.Get<ContentDispositionHeaderValue>(HeaderNames.ContentDisposition);
}
set
{
Headers.Set(HeaderNames.ContentDisposition, value);
}
}
public long? ContentLength
{
get
{
return Headers.Get<long?>(HeaderNames.ContentLength);
}
set
{
Headers.Set(HeaderNames.ContentLength, value.HasValue ? HeaderUtilities.FormatInt64(value.Value) : null);
}
}
public ContentRangeHeaderValue ContentRange
{
get
{
return Headers.Get<ContentRangeHeaderValue>(HeaderNames.ContentRange);
}
set
{
Headers.Set(HeaderNames.ContentRange, value);
}
}
public MediaTypeHeaderValue ContentType
{
get
{
return Headers.Get<MediaTypeHeaderValue>(HeaderNames.ContentType);
}
set
{
Headers.Set(HeaderNames.ContentType, value);
}
}
public IList<CookieHeaderValue> Cookie
{
get
{
return Headers.GetList<CookieHeaderValue>(HeaderNames.Cookie);
}
set
{
Headers.SetList(HeaderNames.Cookie, value);
}
}
public DateTimeOffset? Date
{
get
{
return Headers.GetDate(HeaderNames.Date);
}
set
{
Headers.SetDate(HeaderNames.Date, value);
}
}
public DateTimeOffset? Expires
{
get
{
return Headers.GetDate(HeaderNames.Expires);
}
set
{
Headers.SetDate(HeaderNames.Expires, value);
}
}
public HostString Host
{
get
{
return HostString.FromUriComponent(Headers[HeaderNames.Host]);
}
set
{
Headers[HeaderNames.Host] = value.ToUriComponent();
}
}
public IList<EntityTagHeaderValue> IfMatch
{
get
{
return Headers.GetList<EntityTagHeaderValue>(HeaderNames.IfMatch);
}
set
{
Headers.SetList(HeaderNames.IfMatch, value);
}
}
public DateTimeOffset? IfModifiedSince
{
get
{
return Headers.GetDate(HeaderNames.IfModifiedSince);
}
set
{
Headers.SetDate(HeaderNames.IfModifiedSince, value);
}
}
public IList<EntityTagHeaderValue> IfNoneMatch
{
get
{
return Headers.GetList<EntityTagHeaderValue>(HeaderNames.IfNoneMatch);
}
set
{
Headers.SetList(HeaderNames.IfNoneMatch, value);
}
}
public RangeConditionHeaderValue IfRange
{
get
{
return Headers.Get<RangeConditionHeaderValue>(HeaderNames.IfRange);
}
set
{
Headers.Set(HeaderNames.IfRange, value);
}
}
public DateTimeOffset? IfUnmodifiedSince
{
get
{
return Headers.GetDate(HeaderNames.IfUnmodifiedSince);
}
set
{
Headers.SetDate(HeaderNames.IfUnmodifiedSince, value);
}
}
public DateTimeOffset? LastModified
{
get
{
return Headers.GetDate(HeaderNames.LastModified);
}
set
{
Headers.SetDate(HeaderNames.LastModified, value);
}
}
public RangeHeaderValue Range
{
get
{
return Headers.Get<RangeHeaderValue>(HeaderNames.Range);
}
set
{
Headers.Set(HeaderNames.Range, value);
}
}
public T Get<T>(string name)
{
return Headers.Get<T>(name);
}
public IList<T> GetList<T>(string name)
{
return Headers.GetList<T>(name);
}
public void Set([NotNull] string name, object value)
{
Headers.Set(name, value);
}
public void SetList<T>([NotNull] string name, IList<T> values)
{
Headers.SetList<T>(name, values);
}
public void Append([NotNull] string name, [NotNull] object value)
{
Headers.Append(name, value.ToString());
}
public void AppendList<T>([NotNull] string name, [NotNull] IList<T> values)
{
Headers.AppendValues(name, values.Select(value => value.ToString()).ToArray());
}
}
}