diff options
author | Andrew Arnott <andrewarnott@gmail.com> | 2012-12-31 23:22:47 -0800 |
---|---|---|
committer | Andrew Arnott <andrewarnott@gmail.com> | 2012-12-31 23:22:47 -0800 |
commit | 124fa3c08787ccc43e8f5fac204e7448a6c1bbad (patch) | |
tree | 93cb640ca070a05f41c9c723e421360d4b755ac9 | |
parent | 30cdda15c5e8b6db0d7260697c0a13c06943afec (diff) | |
download | DotNetOpenAuth-124fa3c08787ccc43e8f5fac204e7448a6c1bbad.zip DotNetOpenAuth-124fa3c08787ccc43e8f5fac204e7448a6c1bbad.tar.gz DotNetOpenAuth-124fa3c08787ccc43e8f5fac204e7448a6c1bbad.tar.bz2 |
Adds HttpResponseMessage.AsActionResult extension method.
-rw-r--r-- | src/DotNetOpenAuth.Core/Messaging/MessagingUtilities.cs | 28 |
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(); + } + } + } } } |