summaryrefslogtreecommitdiffstats
path: root/src/DotNetOpenId/IEncodable.cs
blob: 4dd830b6e066db861737ce1e058d73e976090f5f (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
35
36
37
38
using System;
using System.Collections.Generic;
using System.Text;

namespace DotNetOpenId {
	internal enum EncodingType {
		None,
		/// <summary>
		/// Data to be sent to the OP or RP site by telling the user agent to
		/// redirect GET or form POST to a special URL with a payload of arguments.
		/// </summary>
		IndirectMessage,
		/// <summary>
		/// Provider response data to be sent directly to the Relying Party site, 
		/// in response to a direct request initiated by the RP
		/// (not indirect via the user agent).
		/// Key-Value Form encoding will be used.
		/// </summary>
		DirectResponse
	}

	/// <remarks>
	/// Classes that implement IEncodable should be either [Serializable] or
	/// derive from <see cref="MarshalByRefObject"/> so that testing can
	/// remote across app-domain boundaries to sniff/tamper with messages.
	/// </remarks>
	internal interface IEncodable {
		EncodingType EncodingType { get; }
		IDictionary<string, string> EncodedFields { get; }
		/// <summary>
		/// The URL that the user agent should be redirected to 
		/// in the case of <see cref="DotNetOpenId.EncodingType.IndirectMessage"/>.
		/// Does not apply to <see cref="DotNetOpenId.EncodingType.DirectResponse"/>.
		/// </summary>
		Uri RedirectUrl { get; }
		Protocol Protocol { get; }
	}
}