summaryrefslogtreecommitdiffstats
path: root/src/DotNetOpenAuth.Core/Messaging/MessagingUtilities.cs
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2013-03-05 15:27:46 -0800
committerAndrew Arnott <andrewarnott@gmail.com>2013-03-05 15:27:46 -0800
commit523f89ac090cbee41055b2c8fb1faa30a6eb0d69 (patch)
tree08bec573f9e3725a787f091eb696f3551ce8e5c2 /src/DotNetOpenAuth.Core/Messaging/MessagingUtilities.cs
parentcb249022036daaebcccadf09d3c62410de3147b6 (diff)
downloadDotNetOpenAuth-523f89ac090cbee41055b2c8fb1faa30a6eb0d69.zip
DotNetOpenAuth-523f89ac090cbee41055b2c8fb1faa30a6eb0d69.tar.gz
DotNetOpenAuth-523f89ac090cbee41055b2c8fb1faa30a6eb0d69.tar.bz2
Greatly simplifies ApplyHeaders method.
Diffstat (limited to 'src/DotNetOpenAuth.Core/Messaging/MessagingUtilities.cs')
-rw-r--r--src/DotNetOpenAuth.Core/Messaging/MessagingUtilities.cs35
1 files changed, 3 insertions, 32 deletions
diff --git a/src/DotNetOpenAuth.Core/Messaging/MessagingUtilities.cs b/src/DotNetOpenAuth.Core/Messaging/MessagingUtilities.cs
index f561012..e75f861 100644
--- a/src/DotNetOpenAuth.Core/Messaging/MessagingUtilities.cs
+++ b/src/DotNetOpenAuth.Core/Messaging/MessagingUtilities.cs
@@ -1205,39 +1205,10 @@ namespace DotNetOpenAuth.Messaging {
Requires.NotNull(request, "request");
Requires.NotNull(message, "message");
- // First copy headers. Only set those that are explicitly set on the original requestHeaders,
- // because some properties (like IfModifiedSince) activate special behavior when set,
- // even when set to their "original" values.
foreach (string headerName in request.Headers) {
- switch (headerName) {
- case "Accept": message.Headers.Accept.AddRange(request.AcceptTypes.Select(at => new MediaTypeWithQualityHeaderValue(at.Trim()))); break;
- case "Connection": break; // Keep-Alive controls this
- case "Content-Length":
- if (!message.Content.Headers.ContentLength.HasValue) {
- message.Content.Headers.ContentLength = request.ContentLength;
- }
-
- break;
- case "Content-Type": message.Content.Headers.ContentType = new MediaTypeHeaderValue(request.ContentType); break;
- case "Expect": message.Headers.Expect.Add(new NameValueWithParametersHeaderValue(request.Headers[headerName])); break;
- case "Host": break; // implicitly copied as part of the RequestUri
- case "If-Modified-Since": break; // we don't care
- case "Keep-Alive": message.Headers.Connection.Add(request.Headers[headerName]); break;
- case "Proxy-Connection": break; // we don't care
- case "Referer": message.Headers.Referrer = request.UrlReferrer; break;
- case "Transfer-Encoding": message.Headers.TransferEncoding.Add(new TransferCodingHeaderValue(request.Headers[headerName])); break;
- default:
- HttpHeaders headers = headerName.StartsWith("Content-", StringComparison.Ordinal) && message.Content != null
- ? (HttpHeaders)message.Content.Headers
- : message.Headers;
- var values = request.Headers.GetValues(headerName);
- if (values.Length == 1) {
- headers.Add(headerName, values[0]);
- } else {
- headers.Add(headerName, values);
- }
-
- break;
+ string[] headerValues = request.Headers.GetValues(headerName);
+ if (!message.Headers.TryAddWithoutValidation(headerName, headerValues)) {
+ message.Content.Headers.TryAddWithoutValidation(headerName, headerValues);
}
}
}