diff options
author | Andrew Arnott <andrewarnott@gmail.com> | 2013-01-27 17:18:57 -0800 |
---|---|---|
committer | Andrew Arnott <andrewarnott@gmail.com> | 2013-01-27 17:18:57 -0800 |
commit | 6d386076d8662e81c52b9c61f4f25132e5c380f5 (patch) | |
tree | 8af460538e05f506e72111beb114fa749be621c3 /samples/OpenIdOfflineProvider/MainWindow.xaml.cs | |
parent | a1dea3a8fed9581b85245421425849981e9d97c0 (diff) | |
download | DotNetOpenAuth-6d386076d8662e81c52b9c61f4f25132e5c380f5.zip DotNetOpenAuth-6d386076d8662e81c52b9c61f4f25132e5c380f5.tar.gz DotNetOpenAuth-6d386076d8662e81c52b9c61f4f25132e5c380f5.tar.bz2 |
Finished fixing build breaks except in test projects.
Diffstat (limited to 'samples/OpenIdOfflineProvider/MainWindow.xaml.cs')
-rw-r--r-- | samples/OpenIdOfflineProvider/MainWindow.xaml.cs | 42 |
1 files changed, 36 insertions, 6 deletions
diff --git a/samples/OpenIdOfflineProvider/MainWindow.xaml.cs b/samples/OpenIdOfflineProvider/MainWindow.xaml.cs index 30847d0..00f4a6a 100644 --- a/samples/OpenIdOfflineProvider/MainWindow.xaml.cs +++ b/samples/OpenIdOfflineProvider/MainWindow.xaml.cs @@ -12,8 +12,11 @@ namespace DotNetOpenAuth.OpenIdOfflineProvider { using System.IO; using System.Linq; using System.Net; + using System.Net.Http.Headers; using System.Runtime.InteropServices; using System.Text; + using System.Threading; + using System.Threading.Tasks; using System.Web; using System.Windows; using System.Windows.Controls; @@ -30,6 +33,7 @@ namespace DotNetOpenAuth.OpenIdOfflineProvider { using log4net; using log4net.Appender; using log4net.Core; + using Validation; /// <summary> /// Interaction logic for MainWindow.xaml @@ -50,7 +54,7 @@ namespace DotNetOpenAuth.OpenIdOfflineProvider { /// </summary> public MainWindow() { this.InitializeComponent(); - this.hostedProvider.ProcessRequest = this.ProcessRequest; + this.hostedProvider.ProcessRequestAsync = this.ProcessRequestAsync; TextWriterAppender boxLogger = log4net.LogManager.GetRepository().GetAppenders().OfType<TextWriterAppender>().FirstOrDefault(a => a.Name == "TextBoxAppender"); if (boxLogger != null) { boxLogger.Writer = new TextBoxTextWriter(this.logBox); @@ -99,8 +103,8 @@ namespace DotNetOpenAuth.OpenIdOfflineProvider { /// </summary> /// <param name="requestInfo">The request info.</param> /// <param name="response">The response.</param> - private void ProcessRequest(HttpRequestBase requestInfo, HttpListenerResponse response) { - IRequest request = this.hostedProvider.Provider.GetRequest(requestInfo); + private async Task ProcessRequestAsync(HttpRequestBase requestInfo, HttpListenerResponse response) { + IRequest request = await this.hostedProvider.Provider.GetRequestAsync(requestInfo, CancellationToken.None); if (request == null) { App.Logger.Error("A request came in that did not carry an OpenID message."); response.ContentType = "text/html"; @@ -111,7 +115,7 @@ namespace DotNetOpenAuth.OpenIdOfflineProvider { return; } - this.Dispatcher.Invoke((Action)delegate { + this.Dispatcher.Invoke(async delegate { if (!request.IsResponseReady) { var authRequest = request as IAuthenticationRequest; if (authRequest != null) { @@ -137,7 +141,7 @@ namespace DotNetOpenAuth.OpenIdOfflineProvider { case 2: IntPtr oldForegroundWindow = NativeMethods.GetForegroundWindow(); bool stoleFocus = NativeMethods.SetForegroundWindow(this); - CheckIdWindow.ProcessAuthentication(this.hostedProvider, authRequest); + await CheckIdWindow.ProcessAuthenticationAsync(this.hostedProvider, authRequest); if (stoleFocus) { NativeMethods.SetForegroundWindow(oldForegroundWindow); } @@ -147,7 +151,33 @@ namespace DotNetOpenAuth.OpenIdOfflineProvider { } }); - this.hostedProvider.Provider.PrepareResponse(request).Send(response); + var responseMessage = await this.hostedProvider.Provider.PrepareResponseAsync(request, CancellationToken.None); + ApplyHeadersToResponse(responseMessage.Headers, response); + } + + /// <summary> + /// Adds a set of HTTP headers to an <see cref="HttpResponse"/> instance, + /// taking care to set some headers to the appropriate properties of + /// <see cref="HttpResponse" /> + /// </summary> + /// <param name="headers">The headers to add.</param> + /// <param name="response">The <see cref="HttpListenerResponse"/> instance to set the appropriate values to.</param> + private static void ApplyHeadersToResponse(HttpResponseHeaders headers, HttpListenerResponse response) { + Requires.NotNull(headers, "headers"); + Requires.NotNull(response, "response"); + + foreach (var header in headers) { + switch (header.Key) { + case "Content-Type": + response.ContentType = header.Value.First(); + break; + + // Add more special cases here as necessary. + default: + response.AddHeader(header.Key, header.Value.First()); + break; + } + } } /// <summary> |