summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2009-01-10 00:11:39 -0800
committerAndrew <andrewarnott@gmail.com>2009-01-10 00:11:39 -0800
commitabafbb88e5b08ff00805d868a14b4e9c5a106d6f (patch)
treefcbd070b14b0cffd1acd16f259d069cb2dd1b7f0 /src
parentc02c53682ce1e609926b62f0f4fee1af0a5904fc (diff)
downloadDotNetOpenAuth-abafbb88e5b08ff00805d868a14b4e9c5a106d6f.zip
DotNetOpenAuth-abafbb88e5b08ff00805d868a14b4e9c5a106d6f.tar.gz
DotNetOpenAuth-abafbb88e5b08ff00805d868a14b4e9c5a106d6f.tar.bz2
IDirectSslWebRequestHandler need not be given to an OpenID RP or OP instance any more. Ssl support is optional.
Diffstat (limited to 'src')
-rw-r--r--src/DotNetOpenAuth.Test/Mocks/MockIdentifier.cs2
-rw-r--r--src/DotNetOpenAuth/Messaging/ErrorUtilities.cs4
-rw-r--r--src/DotNetOpenAuth/Messaging/MessagingStrings.Designer.cs9
-rw-r--r--src/DotNetOpenAuth/Messaging/MessagingStrings.resx5
-rw-r--r--src/DotNetOpenAuth/OpenId/Identifier.cs2
-rw-r--r--src/DotNetOpenAuth/OpenId/NoDiscoveryIdentifier.cs2
-rw-r--r--src/DotNetOpenAuth/OpenId/Provider/OpenIdProvider.cs7
-rw-r--r--src/DotNetOpenAuth/OpenId/Realm.cs2
-rw-r--r--src/DotNetOpenAuth/OpenId/RelyingParty/OpenIdRelyingParty.cs7
-rw-r--r--src/DotNetOpenAuth/OpenId/UriIdentifier.cs2
-rw-r--r--src/DotNetOpenAuth/OpenId/XriIdentifier.cs6
-rw-r--r--src/DotNetOpenAuth/Yadis/Yadis.cs13
12 files changed, 39 insertions, 22 deletions
diff --git a/src/DotNetOpenAuth.Test/Mocks/MockIdentifier.cs b/src/DotNetOpenAuth.Test/Mocks/MockIdentifier.cs
index 782ba2b..669e4d3 100644
--- a/src/DotNetOpenAuth.Test/Mocks/MockIdentifier.cs
+++ b/src/DotNetOpenAuth.Test/Mocks/MockIdentifier.cs
@@ -50,7 +50,7 @@ namespace DotNetOpenAuth.Test.Mocks {
return this.wrappedIdentifier.GetHashCode();
}
- internal override IEnumerable<ServiceEndpoint> Discover(IDirectSslWebRequestHandler requestHandler) {
+ internal override IEnumerable<ServiceEndpoint> Discover(IDirectWebRequestHandler requestHandler) {
return this.endpoints;
}
diff --git a/src/DotNetOpenAuth/Messaging/ErrorUtilities.cs b/src/DotNetOpenAuth/Messaging/ErrorUtilities.cs
index daa3e00..a00292d 100644
--- a/src/DotNetOpenAuth/Messaging/ErrorUtilities.cs
+++ b/src/DotNetOpenAuth/Messaging/ErrorUtilities.cs
@@ -157,6 +157,7 @@ namespace DotNetOpenAuth.Messaging {
/// Verifies something about the argument supplied to a method.
/// </summary>
/// <param name="condition">The condition that must evaluate to true to avoid an exception.</param>
+ /// <param name="parameterName">Name of the parameter.</param>
/// <exception cref="ArgumentOutOfRangeException">Thrown if <paramref name="condition"/> evaluates to <c>false</c>.</exception>
internal static void VerifyArgumentInRange(bool condition, string parameterName) {
if (!condition) {
@@ -168,6 +169,9 @@ namespace DotNetOpenAuth.Messaging {
/// Verifies something about the argument supplied to a method.
/// </summary>
/// <param name="condition">The condition that must evaluate to true to avoid an exception.</param>
+ /// <param name="parameterName">Name of the parameter.</param>
+ /// <param name="message">The unformatted message.</param>
+ /// <param name="args">The string formatting arguments.</param>
/// <exception cref="ArgumentOutOfRangeException">Thrown if <paramref name="condition"/> evaluates to <c>false</c>.</exception>
internal static void VerifyArgumentInRange(bool condition, string parameterName, string message, params object[] args) {
if (!condition) {
diff --git a/src/DotNetOpenAuth/Messaging/MessagingStrings.Designer.cs b/src/DotNetOpenAuth/Messaging/MessagingStrings.Designer.cs
index fbea069..dcddff8 100644
--- a/src/DotNetOpenAuth/Messaging/MessagingStrings.Designer.cs
+++ b/src/DotNetOpenAuth/Messaging/MessagingStrings.Designer.cs
@@ -376,6 +376,15 @@ namespace DotNetOpenAuth.Messaging {
}
/// <summary>
+ /// Looks up a localized string similar to The provided instance of {0} does not implement the {1} interface, which is required for RequireSsl mode..
+ /// </summary>
+ internal static string SslOnlyRequestNotSupported {
+ get {
+ return ResourceManager.GetString("SslOnlyRequestNotSupported", resourceCulture);
+ }
+ }
+
+ /// <summary>
/// Looks up a localized string similar to The stream&apos;s CanRead property returned false..
/// </summary>
internal static string StreamUnreadable {
diff --git a/src/DotNetOpenAuth/Messaging/MessagingStrings.resx b/src/DotNetOpenAuth/Messaging/MessagingStrings.resx
index 4e06ba8..e11f874 100644
--- a/src/DotNetOpenAuth/Messaging/MessagingStrings.resx
+++ b/src/DotNetOpenAuth/Messaging/MessagingStrings.resx
@@ -222,6 +222,9 @@
<data name="SigningNotSupported" xml:space="preserve">
<value>This channel does not support signing messages. To support signing messages, a derived Channel type must override the Sign and IsSignatureValid methods.</value>
</data>
+ <data name="SslOnlyRequestNotSupported" xml:space="preserve">
+ <value>The provided instance of {0} does not implement the {1} interface, which is required for RequireSsl mode.</value>
+ </data>
<data name="StreamUnreadable" xml:space="preserve">
<value>The stream's CanRead property returned false.</value>
</data>
@@ -270,4 +273,4 @@
<data name="WebRequestFailed" xml:space="preserve">
<value>Web request to '{0}' failed.</value>
</data>
-</root>
+</root> \ No newline at end of file
diff --git a/src/DotNetOpenAuth/OpenId/Identifier.cs b/src/DotNetOpenAuth/OpenId/Identifier.cs
index 0fd50c6..e59aa91 100644
--- a/src/DotNetOpenAuth/OpenId/Identifier.cs
+++ b/src/DotNetOpenAuth/OpenId/Identifier.cs
@@ -181,7 +181,7 @@ namespace DotNetOpenAuth.OpenId {
/// <returns>
/// An initialized structure containing the discovered provider endpoint information.
/// </returns>
- internal abstract IEnumerable<ServiceEndpoint> Discover(IDirectSslWebRequestHandler requestHandler);
+ internal abstract IEnumerable<ServiceEndpoint> Discover(IDirectWebRequestHandler requestHandler);
/// <summary>
/// Returns an <see cref="Identifier"/> that has no URI fragment.
diff --git a/src/DotNetOpenAuth/OpenId/NoDiscoveryIdentifier.cs b/src/DotNetOpenAuth/OpenId/NoDiscoveryIdentifier.cs
index 9729680..531356f 100644
--- a/src/DotNetOpenAuth/OpenId/NoDiscoveryIdentifier.cs
+++ b/src/DotNetOpenAuth/OpenId/NoDiscoveryIdentifier.cs
@@ -72,7 +72,7 @@ namespace DotNetOpenAuth.OpenId {
/// <returns>
/// An initialized structure containing the discovered provider endpoint information.
/// </returns>
- internal override IEnumerable<ServiceEndpoint> Discover(IDirectSslWebRequestHandler requestHandler) {
+ internal override IEnumerable<ServiceEndpoint> Discover(IDirectWebRequestHandler requestHandler) {
return Enumerable.Empty<ServiceEndpoint>();
}
diff --git a/src/DotNetOpenAuth/OpenId/Provider/OpenIdProvider.cs b/src/DotNetOpenAuth/OpenId/Provider/OpenIdProvider.cs
index 866aca6..5fa5d97 100644
--- a/src/DotNetOpenAuth/OpenId/Provider/OpenIdProvider.cs
+++ b/src/DotNetOpenAuth/OpenId/Provider/OpenIdProvider.cs
@@ -66,11 +66,8 @@ namespace DotNetOpenAuth.OpenId.Provider {
/// Gets the web request handler to use for discovery and the part of
/// authentication where direct messages are sent to an untrusted remote party.
/// </summary>
- internal IDirectSslWebRequestHandler WebRequestHandler {
- // TODO: Since the OpenIdChannel.WebRequestHandler might be set to a non-SSL
- // implementation, we should consider altering the consumers of this property
- // to handle either case.
- get { return this.Channel.WebRequestHandler as IDirectSslWebRequestHandler; }
+ internal IDirectWebRequestHandler WebRequestHandler {
+ get { return this.Channel.WebRequestHandler; }
}
/// <summary>
diff --git a/src/DotNetOpenAuth/OpenId/Realm.cs b/src/DotNetOpenAuth/OpenId/Realm.cs
index 507aaec..6365802 100644
--- a/src/DotNetOpenAuth/OpenId/Realm.cs
+++ b/src/DotNetOpenAuth/OpenId/Realm.cs
@@ -358,7 +358,7 @@ namespace DotNetOpenAuth.OpenId {
/// <returns>
/// The details of the endpoints if found, otherwise null.
/// </returns>
- internal IEnumerable<RelyingPartyEndpointDescription> Discover(IDirectSslWebRequestHandler requestHandler, bool allowRedirects) {
+ internal IEnumerable<RelyingPartyEndpointDescription> Discover(IDirectWebRequestHandler requestHandler, bool allowRedirects) {
// Attempt YADIS discovery
DiscoveryResult yadisResult = Yadis.Discover(requestHandler, this.UriWithWildcardChangedToWww, false);
if (yadisResult != null) {
diff --git a/src/DotNetOpenAuth/OpenId/RelyingParty/OpenIdRelyingParty.cs b/src/DotNetOpenAuth/OpenId/RelyingParty/OpenIdRelyingParty.cs
index 32bcbdc..b73e01f 100644
--- a/src/DotNetOpenAuth/OpenId/RelyingParty/OpenIdRelyingParty.cs
+++ b/src/DotNetOpenAuth/OpenId/RelyingParty/OpenIdRelyingParty.cs
@@ -176,11 +176,8 @@ namespace DotNetOpenAuth.OpenId.RelyingParty {
/// Gets the web request handler to use for discovery and the part of
/// authentication where direct messages are sent to an untrusted remote party.
/// </summary>
- internal IDirectSslWebRequestHandler WebRequestHandler {
- // TODO: Since the OpenIdChannel.WebRequestHandler might be set to a non-SSL
- // implementation, we should consider altering the consumers of this property
- // to handle either case.
- get { return this.Channel.WebRequestHandler as IDirectSslWebRequestHandler; }
+ internal IDirectWebRequestHandler WebRequestHandler {
+ get { return this.Channel.WebRequestHandler; }
}
/// <summary>
diff --git a/src/DotNetOpenAuth/OpenId/UriIdentifier.cs b/src/DotNetOpenAuth/OpenId/UriIdentifier.cs
index b03963e..a55f1d8 100644
--- a/src/DotNetOpenAuth/OpenId/UriIdentifier.cs
+++ b/src/DotNetOpenAuth/OpenId/UriIdentifier.cs
@@ -203,7 +203,7 @@ namespace DotNetOpenAuth.OpenId {
/// <returns>
/// An initialized structure containing the discovered provider endpoint information.
/// </returns>
- internal override IEnumerable<ServiceEndpoint> Discover(IDirectSslWebRequestHandler requestHandler) {
+ internal override IEnumerable<ServiceEndpoint> Discover(IDirectWebRequestHandler requestHandler) {
List<ServiceEndpoint> endpoints = new List<ServiceEndpoint>();
// Attempt YADIS discovery
diff --git a/src/DotNetOpenAuth/OpenId/XriIdentifier.cs b/src/DotNetOpenAuth/OpenId/XriIdentifier.cs
index b3d6375..ab4cdb9 100644
--- a/src/DotNetOpenAuth/OpenId/XriIdentifier.cs
+++ b/src/DotNetOpenAuth/OpenId/XriIdentifier.cs
@@ -157,7 +157,7 @@ namespace DotNetOpenAuth.OpenId {
/// <returns>
/// An initialized structure containing the discovered provider endpoint information.
/// </returns>
- internal override IEnumerable<ServiceEndpoint> Discover(IDirectSslWebRequestHandler requestHandler) {
+ internal override IEnumerable<ServiceEndpoint> Discover(IDirectWebRequestHandler requestHandler) {
return this.DownloadXrds(requestHandler).CreateServiceEndpoints(this);
}
@@ -168,7 +168,7 @@ namespace DotNetOpenAuth.OpenId {
/// <param name="requestHandler">The request handler to use in discovery.</param>
/// <param name="userSuppliedIdentifier">The user supplied identifier, which may differ from this XRI instance due to multiple discovery steps.</param>
/// <returns>A list of service endpoints offered for this identifier.</returns>
- internal IEnumerable<ServiceEndpoint> Discover(IDirectSslWebRequestHandler requestHandler, XriIdentifier userSuppliedIdentifier) {
+ internal IEnumerable<ServiceEndpoint> Discover(IDirectWebRequestHandler requestHandler, XriIdentifier userSuppliedIdentifier) {
return this.DownloadXrds(requestHandler).CreateServiceEndpoints(userSuppliedIdentifier);
}
@@ -225,7 +225,7 @@ namespace DotNetOpenAuth.OpenId {
/// </summary>
/// <param name="requestHandler">The request handler.</param>
/// <returns>The XRDS document.</returns>
- private XrdsDocument DownloadXrds(IDirectSslWebRequestHandler requestHandler) {
+ private XrdsDocument DownloadXrds(IDirectWebRequestHandler requestHandler) {
XrdsDocument doc;
using (var xrdsResponse = Yadis.Request(requestHandler, this.XrdsUrl, this.IsDiscoverySecureEndToEnd)) {
doc = new XrdsDocument(XmlReader.Create(xrdsResponse.ResponseStream));
diff --git a/src/DotNetOpenAuth/Yadis/Yadis.cs b/src/DotNetOpenAuth/Yadis/Yadis.cs
index 9df6c69..89a74f6 100644
--- a/src/DotNetOpenAuth/Yadis/Yadis.cs
+++ b/src/DotNetOpenAuth/Yadis/Yadis.cs
@@ -41,7 +41,7 @@ namespace DotNetOpenAuth.Yadis {
/// or if <paramref name="requireSsl"/> is true but part of discovery
/// is not protected by SSL.
/// </returns>
- public static DiscoveryResult Discover(IDirectSslWebRequestHandler requestHandler, UriIdentifier uri, bool requireSsl) {
+ public static DiscoveryResult Discover(IDirectWebRequestHandler requestHandler, UriIdentifier uri, bool requireSsl) {
DirectWebResponse response;
try {
if (requireSsl && !string.Equals(uri.Uri.Scheme, Uri.UriSchemeHttps, StringComparison.OrdinalIgnoreCase)) {
@@ -122,7 +122,8 @@ namespace DotNetOpenAuth.Yadis {
/// <param name="requireSsl">Whether only HTTPS URLs should ever be retrieved.</param>
/// <param name="acceptTypes">The value of the Accept HTTP header to include in the request.</param>
/// <returns>The HTTP response retrieved from the request.</returns>
- internal static DirectWebResponse Request(IDirectSslWebRequestHandler requestHandler, Uri uri, bool requireSsl, params string[] acceptTypes) {
+ internal static DirectWebResponse Request(IDirectWebRequestHandler requestHandler, Uri uri, bool requireSsl, params string[] acceptTypes) {
+ ErrorUtilities.VerifyArgumentNotNull(requestHandler, "requestHandler");
ErrorUtilities.VerifyArgumentNotNull(uri, "uri");
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
@@ -131,7 +132,13 @@ namespace DotNetOpenAuth.Yadis {
request.Accept = string.Join(",", acceptTypes);
}
- return requestHandler.GetResponse(request, requireSsl);
+ if (requireSsl) {
+ var sslRequestHandler = requestHandler as IDirectSslWebRequestHandler;
+ ErrorUtilities.VerifyArgument(sslRequestHandler != null, MessagingStrings.SslOnlyRequestNotSupported, typeof(IDirectWebRequestHandler).Name, typeof(IDirectSslWebRequestHandler).Name);
+ return sslRequestHandler.GetResponse(request, requireSsl);
+ } else {
+ return requestHandler.GetResponse(request);
+ }
}
/// <summary>