-
-
Notifications
You must be signed in to change notification settings - Fork 205
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
11 changed files
with
361 additions
and
373 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,30 +1,28 @@ | ||
using System.Net.Http; | ||
using System.Net.Http; | ||
using System.Net.Http.Headers; | ||
using JetBrains.Annotations; | ||
using Stef.Validation; | ||
|
||
namespace WireMock.Http | ||
namespace WireMock.Http; | ||
|
||
internal static class ByteArrayContentHelper | ||
{ | ||
internal static class ByteArrayContentHelper | ||
/// <summary> | ||
/// Creates a ByteArrayContent object. | ||
/// </summary> | ||
/// <param name="content">The byte[] content (cannot be null)</param> | ||
/// <param name="contentType">The ContentType (can be null)</param> | ||
/// <returns>ByteArrayContent</returns> | ||
internal static ByteArrayContent Create(byte[] content, MediaTypeHeaderValue? contentType) | ||
{ | ||
/// <summary> | ||
/// Creates a ByteArrayContent object. | ||
/// </summary> | ||
/// <param name="content">The byte[] content (cannot be null)</param> | ||
/// <param name="contentType">The ContentType (can be null)</param> | ||
/// <returns>ByteArrayContent</returns> | ||
internal static ByteArrayContent Create([NotNull] byte[] content, [CanBeNull] MediaTypeHeaderValue contentType) | ||
{ | ||
Guard.NotNull(content, nameof(content)); | ||
|
||
var byteContent = new ByteArrayContent(content); | ||
if (contentType != null) | ||
{ | ||
byteContent.Headers.Remove(HttpKnownHeaderNames.ContentType); | ||
byteContent.Headers.ContentType = contentType; | ||
} | ||
Guard.NotNull(content); | ||
|
||
return byteContent; | ||
var byteContent = new ByteArrayContent(content); | ||
if (contentType != null) | ||
{ | ||
byteContent.Headers.Remove(HttpKnownHeaderNames.ContentType); | ||
byteContent.Headers.ContentType = contentType; | ||
} | ||
|
||
return byteContent; | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,122 +1,121 @@ | ||
// Licensed to the .NET Foundation under one or more agreements. | ||
// Licensed to the .NET Foundation under one or more agreements. | ||
// The .NET Foundation licenses this file to you under the MIT license. | ||
// See the LICENSE file in the project root for more information. | ||
|
||
using System; | ||
using System.Linq; | ||
|
||
namespace WireMock.Http | ||
namespace WireMock.Http; | ||
|
||
/// <summary> | ||
/// Copied from https://raw.githubusercontent.com/dotnet/corefx/master/src/Common/src/System/Net/HttpKnownHeaderNames.cs | ||
/// </summary> | ||
internal static class HttpKnownHeaderNames | ||
{ | ||
/// <summary> | ||
/// Copied from https://raw.githubusercontent.com/dotnet/corefx/master/src/Common/src/System/Net/HttpKnownHeaderNames.cs | ||
/// </summary> | ||
internal static class HttpKnownHeaderNames | ||
// https://docs.microsoft.com/en-us/dotnet/api/system.net.webheadercollection.isrestricted | ||
private static readonly string[] RestrictedResponseHeaders = | ||
{ | ||
// https://docs.microsoft.com/en-us/dotnet/api/system.net.webheadercollection.isrestricted | ||
private static readonly string[] RestrictedResponseHeaders = | ||
{ | ||
Accept, | ||
Connection, | ||
ContentLength, | ||
ContentType, | ||
Date, // RFC1123Pattern | ||
Expect, | ||
Host, | ||
IfModifiedSince, | ||
Range, | ||
Referer, | ||
TransferEncoding, | ||
UserAgent, | ||
ProxyConnection | ||
}; | ||
Accept, | ||
Connection, | ||
ContentLength, | ||
ContentType, | ||
Date, // RFC1123Pattern | ||
Expect, | ||
Host, | ||
IfModifiedSince, | ||
Range, | ||
Referer, | ||
TransferEncoding, | ||
UserAgent, | ||
ProxyConnection | ||
}; | ||
|
||
/// <summary>Tests whether the specified HTTP header can be set for the response.</summary> | ||
/// <param name="headerName">The header to test.</param> | ||
/// <returns>true if the header is restricted; otherwise, false.</returns> | ||
public static bool IsRestrictedResponseHeader(string headerName) => RestrictedResponseHeaders.Contains(headerName, StringComparer.OrdinalIgnoreCase); | ||
/// <summary>Tests whether the specified HTTP header can be set for the response.</summary> | ||
/// <param name="headerName">The header to test.</param> | ||
/// <returns>true if the header is restricted; otherwise, false.</returns> | ||
public static bool IsRestrictedResponseHeader(string headerName) => RestrictedResponseHeaders.Contains(headerName, StringComparer.OrdinalIgnoreCase); | ||
|
||
public const string Accept = "Accept"; | ||
public const string AcceptCharset = "Accept-Charset"; | ||
public const string AcceptEncoding = "Accept-Encoding"; | ||
public const string AcceptLanguage = "Accept-Language"; | ||
public const string AcceptPatch = "Accept-Patch"; | ||
public const string AcceptRanges = "Accept-Ranges"; | ||
public const string AccessControlAllowCredentials = "Access-Control-Allow-Credentials"; | ||
public const string AccessControlAllowHeaders = "Access-Control-Allow-Headers"; | ||
public const string AccessControlAllowMethods = "Access-Control-Allow-Methods"; | ||
public const string AccessControlAllowOrigin = "Access-Control-Allow-Origin"; | ||
public const string AccessControlExposeHeaders = "Access-Control-Expose-Headers"; | ||
public const string AccessControlMaxAge = "Access-Control-Max-Age"; | ||
public const string Age = "Age"; | ||
public const string Allow = "Allow"; | ||
public const string AltSvc = "Alt-Svc"; | ||
public const string Authorization = "Authorization"; | ||
public const string CacheControl = "Cache-Control"; | ||
public const string Connection = "Connection"; | ||
public const string ContentDisposition = "Content-Disposition"; | ||
public const string ContentEncoding = "Content-Encoding"; | ||
public const string ContentLanguage = "Content-Language"; | ||
public const string ContentLength = "Content-Length"; | ||
public const string ContentLocation = "Content-Location"; | ||
public const string ContentMD5 = "Content-MD5"; | ||
public const string ContentRange = "Content-Range"; | ||
public const string ContentSecurityPolicy = "Content-Security-Policy"; | ||
public const string ContentType = "Content-Type"; | ||
public const string Cookie = "Cookie"; | ||
public const string Cookie2 = "Cookie2"; | ||
public const string Date = "Date"; | ||
public const string ETag = "ETag"; | ||
public const string Expect = "Expect"; | ||
public const string Expires = "Expires"; | ||
public const string From = "From"; | ||
public const string Host = "Host"; | ||
public const string IfMatch = "If-Match"; | ||
public const string IfModifiedSince = "If-Modified-Since"; | ||
public const string IfNoneMatch = "If-None-Match"; | ||
public const string IfRange = "If-Range"; | ||
public const string IfUnmodifiedSince = "If-Unmodified-Since"; | ||
public const string KeepAlive = "Keep-Alive"; | ||
public const string LastModified = "Last-Modified"; | ||
public const string Link = "Link"; | ||
public const string Location = "Location"; | ||
public const string MaxForwards = "Max-Forwards"; | ||
public const string Origin = "Origin"; | ||
public const string P3P = "P3P"; | ||
public const string Pragma = "Pragma"; | ||
public const string ProxyAuthenticate = "Proxy-Authenticate"; | ||
public const string ProxyAuthorization = "Proxy-Authorization"; | ||
public const string ProxyConnection = "Proxy-Connection"; | ||
public const string PublicKeyPins = "Public-Key-Pins"; | ||
public const string Range = "Range"; | ||
public const string Referer = "Referer"; // NB: The spelling-mistake "Referer" for "Referrer" must be matched. | ||
public const string RetryAfter = "Retry-After"; | ||
public const string SecWebSocketAccept = "Sec-WebSocket-Accept"; | ||
public const string SecWebSocketExtensions = "Sec-WebSocket-Extensions"; | ||
public const string SecWebSocketKey = "Sec-WebSocket-Key"; | ||
public const string SecWebSocketProtocol = "Sec-WebSocket-Protocol"; | ||
public const string SecWebSocketVersion = "Sec-WebSocket-Version"; | ||
public const string Server = "Server"; | ||
public const string SetCookie = "Set-Cookie"; | ||
public const string SetCookie2 = "Set-Cookie2"; | ||
public const string StrictTransportSecurity = "Strict-Transport-Security"; | ||
public const string TE = "TE"; | ||
public const string TSV = "TSV"; | ||
public const string Trailer = "Trailer"; | ||
public const string TransferEncoding = "Transfer-Encoding"; | ||
public const string Upgrade = "Upgrade"; | ||
public const string UpgradeInsecureRequests = "Upgrade-Insecure-Requests"; | ||
public const string UserAgent = "User-Agent"; | ||
public const string Vary = "Vary"; | ||
public const string Via = "Via"; | ||
public const string WWWAuthenticate = "WWW-Authenticate"; | ||
public const string Warning = "Warning"; | ||
public const string XAspNetVersion = "X-AspNet-Version"; | ||
public const string XContentDuration = "X-Content-Duration"; | ||
public const string XContentTypeOptions = "X-Content-Type-Options"; | ||
public const string XFrameOptions = "X-Frame-Options"; | ||
public const string XMSEdgeRef = "X-MSEdge-Ref"; | ||
public const string XPoweredBy = "X-Powered-By"; | ||
public const string XRequestID = "X-Request-ID"; | ||
public const string XUACompatible = "X-UA-Compatible"; | ||
} | ||
public const string Accept = "Accept"; | ||
public const string AcceptCharset = "Accept-Charset"; | ||
public const string AcceptEncoding = "Accept-Encoding"; | ||
public const string AcceptLanguage = "Accept-Language"; | ||
public const string AcceptPatch = "Accept-Patch"; | ||
public const string AcceptRanges = "Accept-Ranges"; | ||
public const string AccessControlAllowCredentials = "Access-Control-Allow-Credentials"; | ||
public const string AccessControlAllowHeaders = "Access-Control-Allow-Headers"; | ||
public const string AccessControlAllowMethods = "Access-Control-Allow-Methods"; | ||
public const string AccessControlAllowOrigin = "Access-Control-Allow-Origin"; | ||
public const string AccessControlExposeHeaders = "Access-Control-Expose-Headers"; | ||
public const string AccessControlMaxAge = "Access-Control-Max-Age"; | ||
public const string Age = "Age"; | ||
public const string Allow = "Allow"; | ||
public const string AltSvc = "Alt-Svc"; | ||
public const string Authorization = "Authorization"; | ||
public const string CacheControl = "Cache-Control"; | ||
public const string Connection = "Connection"; | ||
public const string ContentDisposition = "Content-Disposition"; | ||
public const string ContentEncoding = "Content-Encoding"; | ||
public const string ContentLanguage = "Content-Language"; | ||
public const string ContentLength = "Content-Length"; | ||
public const string ContentLocation = "Content-Location"; | ||
public const string ContentMD5 = "Content-MD5"; | ||
public const string ContentRange = "Content-Range"; | ||
public const string ContentSecurityPolicy = "Content-Security-Policy"; | ||
public const string ContentType = "Content-Type"; | ||
public const string Cookie = "Cookie"; | ||
public const string Cookie2 = "Cookie2"; | ||
public const string Date = "Date"; | ||
public const string ETag = "ETag"; | ||
public const string Expect = "Expect"; | ||
public const string Expires = "Expires"; | ||
public const string From = "From"; | ||
public const string Host = "Host"; | ||
public const string IfMatch = "If-Match"; | ||
public const string IfModifiedSince = "If-Modified-Since"; | ||
public const string IfNoneMatch = "If-None-Match"; | ||
public const string IfRange = "If-Range"; | ||
public const string IfUnmodifiedSince = "If-Unmodified-Since"; | ||
public const string KeepAlive = "Keep-Alive"; | ||
public const string LastModified = "Last-Modified"; | ||
public const string Link = "Link"; | ||
public const string Location = "Location"; | ||
public const string MaxForwards = "Max-Forwards"; | ||
public const string Origin = "Origin"; | ||
public const string P3P = "P3P"; | ||
public const string Pragma = "Pragma"; | ||
public const string ProxyAuthenticate = "Proxy-Authenticate"; | ||
public const string ProxyAuthorization = "Proxy-Authorization"; | ||
public const string ProxyConnection = "Proxy-Connection"; | ||
public const string PublicKeyPins = "Public-Key-Pins"; | ||
public const string Range = "Range"; | ||
public const string Referer = "Referer"; // NB: The spelling-mistake "Referer" for "Referrer" must be matched. | ||
public const string RetryAfter = "Retry-After"; | ||
public const string SecWebSocketAccept = "Sec-WebSocket-Accept"; | ||
public const string SecWebSocketExtensions = "Sec-WebSocket-Extensions"; | ||
public const string SecWebSocketKey = "Sec-WebSocket-Key"; | ||
public const string SecWebSocketProtocol = "Sec-WebSocket-Protocol"; | ||
public const string SecWebSocketVersion = "Sec-WebSocket-Version"; | ||
public const string Server = "Server"; | ||
public const string SetCookie = "Set-Cookie"; | ||
public const string SetCookie2 = "Set-Cookie2"; | ||
public const string StrictTransportSecurity = "Strict-Transport-Security"; | ||
public const string TE = "TE"; | ||
public const string TSV = "TSV"; | ||
public const string Trailer = "Trailer"; | ||
public const string TransferEncoding = "Transfer-Encoding"; | ||
public const string Upgrade = "Upgrade"; | ||
public const string UpgradeInsecureRequests = "Upgrade-Insecure-Requests"; | ||
public const string UserAgent = "User-Agent"; | ||
public const string Vary = "Vary"; | ||
public const string Via = "Via"; | ||
public const string WWWAuthenticate = "WWW-Authenticate"; | ||
public const string Warning = "Warning"; | ||
public const string XAspNetVersion = "X-AspNet-Version"; | ||
public const string XContentDuration = "X-Content-Duration"; | ||
public const string XContentTypeOptions = "X-Content-Type-Options"; | ||
public const string XFrameOptions = "X-Frame-Options"; | ||
public const string XMSEdgeRef = "X-MSEdge-Ref"; | ||
public const string XPoweredBy = "X-Powered-By"; | ||
public const string XRequestID = "X-Request-ID"; | ||
public const string XUACompatible = "X-UA-Compatible"; | ||
} |
Oops, something went wrong.