summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2012-12-31 23:22:47 -0800
committerAndrew Arnott <andrewarnott@gmail.com>2012-12-31 23:22:47 -0800
commit124fa3c08787ccc43e8f5fac204e7448a6c1bbad (patch)
tree93cb640ca070a05f41c9c723e421360d4b755ac9
parent30cdda15c5e8b6db0d7260697c0a13c06943afec (diff)
downloadDotNetOpenAuth-124fa3c08787ccc43e8f5fac204e7448a6c1bbad.zip
DotNetOpenAuth-124fa3c08787ccc43e8f5fac204e7448a6c1bbad.tar.gz
DotNetOpenAuth-124fa3c08787ccc43e8f5fac204e7448a6c1bbad.tar.bz2
Adds HttpResponseMessage.AsActionResult extension method.
-rw-r--r--src/DotNetOpenAuth.Core/Messaging/MessagingUtilities.cs28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/DotNetOpenAuth.Core/Messaging/MessagingUtilities.cs b/src/DotNetOpenAuth.Core/Messaging/MessagingUtilities.cs
index 267b003..9aee0e3 100644
--- a/src/DotNetOpenAuth.Core/Messaging/MessagingUtilities.cs
+++ b/src/DotNetOpenAuth.Core/Messaging/MessagingUtilities.cs
@@ -378,6 +378,11 @@ namespace DotNetOpenAuth.Messaging {
return GetPublicFacingUrl(request, request.ServerVariables);
}
+ public static ActionResult AsActionResult(this HttpResponseMessage response) {
+ Requires.NotNull(response, "response");
+ return new HttpResponseMessageActionResult(response);
+ }
+
internal static void DisposeIfNotNull(this IDisposable disposable) {
if (disposable != null) {
disposable.Dispose();
@@ -1962,5 +1967,28 @@ namespace DotNetOpenAuth.Messaging {
#endregion
}
+
+ private class HttpResponseMessageActionResult : ActionResult {
+ private readonly HttpResponseMessage response;
+
+ internal HttpResponseMessageActionResult(HttpResponseMessage response) {
+ Requires.NotNull(response, "response");
+ this.response = response;
+ }
+
+ public override void ExecuteResult(ControllerContext context) {
+ context.HttpContext.Response.StatusCode = (int)this.response.StatusCode;
+ context.HttpContext.Response.Status = this.response.ReasonPhrase;
+ foreach (var header in this.response.Headers) {
+ foreach (var value in header.Value) {
+ context.HttpContext.Response.AddHeader(header.Key, value);
+ }
+ }
+
+ if (this.response.Content != null) {
+ this.response.Content.CopyToAsync(context.HttpContext.Response.OutputStream).Wait();
+ }
+ }
+ }
}
}