summaryrefslogtreecommitdiffstats
path: root/src/DotNetOpenId/RelyingParty/DirectRequest.cs
blob: 2d0cc0599df0669808780f148ddd497a3398756f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Diagnostics;
using System.Globalization;
using System.IO;

namespace DotNetOpenId.RelyingParty {
	[DebuggerDisplay("OpenId: {Protocol.Version}")]
	abstract class DirectRequest {
		protected DirectRequest(OpenIdRelyingParty relyingParty, ServiceEndpoint provider, IDictionary<string, string> args) {
			if (relyingParty == null) throw new ArgumentNullException("relyingParty");
			if (provider == null) throw new ArgumentNullException("provider");
			if (args == null) throw new ArgumentNullException("args");
			RelyingParty = relyingParty;
			Provider = provider;
			Args = args;
			if (Protocol.QueryDeclaredNamespaceVersion != null &&
				!Args.ContainsKey(Protocol.openid.ns))
				Args.Add(Protocol.openid.ns, Protocol.QueryDeclaredNamespaceVersion);
		}
		protected ServiceEndpoint Provider { get; private set; }
		protected Protocol Protocol { get { return Provider.Protocol; } }
		protected internal IDictionary<string, string> Args { get; private set; }
		protected OpenIdRelyingParty RelyingParty { get; private set; }

		protected IDictionary<string, string> GetResponse() {
			Logger.DebugFormat("Sending direct message to {0}: {1}{2}", Provider.ProviderEndpoint,
				Environment.NewLine, Util.ToString(Args));
			return RelyingParty.DirectMessageChannel.SendDirectMessageAndGetResponse(Provider, Args);
		}
	}
}