diff options
author | Andrew Arnott <andrewarnott@gmail.com> | 2012-03-31 11:45:42 -0700 |
---|---|---|
committer | Andrew Arnott <andrewarnott@gmail.com> | 2012-03-31 11:45:42 -0700 |
commit | af226f837b7bb5050ab511e66ba75714f79d8865 (patch) | |
tree | 3dba68ac08d55fa46e2b5c0b52c96d6612b12a2a /src/DotNetOpenAuth.OAuth2.AuthorizationServer/OAuth2/ClientDescription.cs | |
parent | b4aa4d4cf25f358e8ca199fe3fbd446d1bb9bc42 (diff) | |
parent | 7265452c16667c6ff499970b0d6778d5184cc8cb (diff) | |
download | DotNetOpenAuth-af226f837b7bb5050ab511e66ba75714f79d8865.zip DotNetOpenAuth-af226f837b7bb5050ab511e66ba75714f79d8865.tar.gz DotNetOpenAuth-af226f837b7bb5050ab511e66ba75714f79d8865.tar.bz2 |
Applied some refactoring of OAuth2 classes.
Diffstat (limited to 'src/DotNetOpenAuth.OAuth2.AuthorizationServer/OAuth2/ClientDescription.cs')
-rw-r--r-- | src/DotNetOpenAuth.OAuth2.AuthorizationServer/OAuth2/ClientDescription.cs | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/src/DotNetOpenAuth.OAuth2.AuthorizationServer/OAuth2/ClientDescription.cs b/src/DotNetOpenAuth.OAuth2.AuthorizationServer/OAuth2/ClientDescription.cs new file mode 100644 index 0000000..76c3ea6 --- /dev/null +++ b/src/DotNetOpenAuth.OAuth2.AuthorizationServer/OAuth2/ClientDescription.cs @@ -0,0 +1,71 @@ +//----------------------------------------------------------------------- +// <copyright file="ClientDescription.cs" company="Outercurve Foundation"> +// Copyright (c) Outercurve Foundation. All rights reserved. +// </copyright> +//----------------------------------------------------------------------- + +namespace DotNetOpenAuth.OAuth2 { + using System; + using System.Collections.Generic; + using System.Linq; + using System.Text; + + /// <summary> + /// A default implementation of the <see cref="IClientDescription"/> interface. + /// </summary> + public class ClientDescription : IClientDescription { + /// <summary> + /// A delegate that determines whether the callback is allowed. + /// </summary> + private readonly Func<Uri, bool> isCallbackAllowed; + + /// <summary> + /// Initializes a new instance of the <see cref="ClientDescription"/> class. + /// </summary> + /// <param name="secret">The secret.</param> + /// <param name="defaultCallback">The default callback.</param> + /// <param name="clientType">Type of the client.</param> + /// <param name="isCallbackAllowed">A delegate that determines whether the callback is allowed.</param> + public ClientDescription(string secret, Uri defaultCallback, ClientType clientType, Func<Uri, bool> isCallbackAllowed = null) { + this.Secret = secret; + this.DefaultCallback = defaultCallback; + this.ClientType = clientType; + this.isCallbackAllowed = isCallbackAllowed; + } + + /// <summary> + /// Gets the client secret. + /// </summary> + public string Secret { get; private set; } + + /// <summary> + /// Gets the callback to use when an individual authorization request + /// does not include an explicit callback URI. + /// </summary> + /// <value> + /// An absolute URL; or <c>null</c> if none is registered. + /// </value> + public Uri DefaultCallback { get; private set; } + + /// <summary> + /// Gets the type of the client. + /// </summary> + public ClientType ClientType { get; private set; } + + /// <summary> + /// Determines whether a callback URI included in a client's authorization request + /// is among those allowed callbacks for the registered client. + /// </summary> + /// <param name="callback">The absolute URI the client has requested the authorization result be received at.</param> + /// <returns> + /// <c>true</c> if the callback URL is allowable for this client; otherwise, <c>false</c>. + /// </returns> + public bool IsCallbackAllowed(Uri callback) { + if (this.isCallbackAllowed != null) { + return this.isCallbackAllowed(callback); + } + + return EqualityComparer<Uri>.Default.Equals(this.DefaultCallback, callback); + } + } +} |