summaryrefslogtreecommitdiffstats
path: root/samples/OpenIdOfflineProvider/MainWindow.xaml.cs
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2013-01-27 17:18:57 -0800
committerAndrew Arnott <andrewarnott@gmail.com>2013-01-27 17:18:57 -0800
commit6d386076d8662e81c52b9c61f4f25132e5c380f5 (patch)
tree8af460538e05f506e72111beb114fa749be621c3 /samples/OpenIdOfflineProvider/MainWindow.xaml.cs
parenta1dea3a8fed9581b85245421425849981e9d97c0 (diff)
downloadDotNetOpenAuth-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.cs42
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>