summaryrefslogtreecommitdiffstats
path: root/samples/OAuthConsumer/SampleWcf.aspx.cs
diff options
context:
space:
mode:
Diffstat (limited to 'samples/OAuthConsumer/SampleWcf.aspx.cs')
-rw-r--r--samples/OAuthConsumer/SampleWcf.aspx.cs31
1 files changed, 17 insertions, 14 deletions
diff --git a/samples/OAuthConsumer/SampleWcf.aspx.cs b/samples/OAuthConsumer/SampleWcf.aspx.cs
index d56a161..d0f69f8 100644
--- a/samples/OAuthConsumer/SampleWcf.aspx.cs
+++ b/samples/OAuthConsumer/SampleWcf.aspx.cs
@@ -7,6 +7,8 @@
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.Security;
+ using System.Threading.Tasks;
+ using System.Web;
using System.Web.UI.WebControls;
using DotNetOpenAuth;
using DotNetOpenAuth.ApplicationBlock;
@@ -19,11 +21,11 @@
/// Sample consumer of our Service Provider sample's WCF service.
/// </summary>
public partial class SampleWcf : System.Web.UI.Page {
- protected void Page_Load(object sender, EventArgs e) {
+ protected async void Page_Load(object sender, EventArgs e) {
if (!IsPostBack) {
if (Session["WcfTokenManager"] != null) {
WebConsumer consumer = this.CreateConsumer();
- var accessTokenMessage = consumer.ProcessUserAuthorization();
+ var accessTokenMessage = await consumer.ProcessUserAuthorizationAsync(new HttpRequestWrapper(Request), Response.ClientDisconnectedToken);
if (accessTokenMessage != null) {
Session["WcfAccessToken"] = accessTokenMessage.AccessToken;
this.authorizationLabel.Text = "Authorized! Access token: " + accessTokenMessage.AccessToken;
@@ -32,7 +34,7 @@
}
}
- protected void getAuthorizationButton_Click(object sender, EventArgs e) {
+ protected async void getAuthorizationButton_Click(object sender, EventArgs e) {
WebConsumer consumer = this.CreateConsumer();
UriBuilder callback = new UriBuilder(Request.Url);
callback.Query = null;
@@ -43,37 +45,38 @@
var requestParams = new Dictionary<string, string> {
{ "scope", scope },
};
- var response = consumer.PrepareRequestUserAuthorization(callback.Uri, requestParams, null);
- consumer.Channel.Send(response);
+ var response = await consumer.PrepareRequestUserAuthorizationAsync(callback.Uri, requestParams, null, Response.ClientDisconnectedToken);
+ var responseMessage = await consumer.Channel.PrepareResponseAsync(response, Response.ClientDisconnectedToken);
+ await responseMessage.SendAsync(new HttpResponseWrapper(Response), Response.ClientDisconnectedToken);
}
- protected void getNameButton_Click(object sender, EventArgs e) {
+ protected async void getNameButton_Click(object sender, EventArgs e) {
try {
- this.nameLabel.Text = this.CallService(client => client.GetName());
+ this.nameLabel.Text = await this.CallServiceAsync(client => client.GetName());
} catch (SecurityAccessDeniedException) {
this.nameLabel.Text = "Access denied!";
}
}
- protected void getAgeButton_Click(object sender, EventArgs e) {
+ protected async void getAgeButton_Click(object sender, EventArgs e) {
try {
- int? age = this.CallService(client => client.GetAge());
+ int? age = await this.CallServiceAsync(client => client.GetAge());
this.ageLabel.Text = age.HasValue ? age.Value.ToString(CultureInfo.CurrentCulture) : "not available";
} catch (SecurityAccessDeniedException) {
this.ageLabel.Text = "Access denied!";
}
}
- protected void getFavoriteSites_Click(object sender, EventArgs e) {
+ protected async void getFavoriteSites_Click(object sender, EventArgs e) {
try {
- string[] favoriteSites = this.CallService(client => client.GetFavoriteSites());
+ string[] favoriteSites = await this.CallServiceAsync(client => client.GetFavoriteSites());
this.favoriteSitesLabel.Text = string.Join(", ", favoriteSites);
} catch (SecurityAccessDeniedException) {
this.favoriteSitesLabel.Text = "Access denied!";
}
}
- private T CallService<T>(Func<DataApiClient, T> predicate) {
+ private async Task<T> CallServiceAsync<T>(Func<DataApiClient, T> predicate) {
DataApiClient client = new DataApiClient();
var serviceEndpoint = new MessageReceivingEndpoint(client.Endpoint.Address.Uri, HttpDeliveryMethods.AuthorizationHeaderRequest | HttpDeliveryMethods.PostRequest);
var accessToken = Session["WcfAccessToken"] as string;
@@ -81,10 +84,10 @@
throw new InvalidOperationException("No access token!");
}
WebConsumer consumer = this.CreateConsumer();
- WebRequest httpRequest = consumer.PrepareAuthorizedRequest(serviceEndpoint, accessToken);
+ var httpRequest = await consumer.PrepareAuthorizedRequestAsync(serviceEndpoint, accessToken, Response.ClientDisconnectedToken);
HttpRequestMessageProperty httpDetails = new HttpRequestMessageProperty();
- httpDetails.Headers[HttpRequestHeader.Authorization] = httpRequest.Headers[HttpRequestHeader.Authorization];
+ httpDetails.Headers[HttpRequestHeader.Authorization] = httpRequest.Headers.Authorization.ToString();
using (OperationContextScope scope = new OperationContextScope(client.InnerChannel)) {
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpDetails;
return predicate(client);