public virtual Uri GetDialogUrl(string dialog, object parameters)
{
if (string.IsNullOrEmpty(dialog))
throw new ArgumentNullException("dialog");
if (parameters == null)
throw new ArgumentNullException("parameters");
IDictionary<string, FacebookMediaObject> mediaObjects;
IDictionary<string, FacebookMediaStream> mediaStreams;
var dictionary = ToDictionary(parameters, out mediaObjects, out mediaStreams) ?? new Dictionary<string, object>();
bool isMobile = false;
if (dictionary.ContainsKey("mobile"))
{
isMobile = (bool)dictionary["mobile"];
dictionary.Remove("mobile");
}
// Automatically add client_id if not present in the parameters for the oauth dialog
if (dialog.Equals("oauth", StringComparison.OrdinalIgnoreCase) && !dictionary.ContainsKey("client_id") && !string.IsNullOrEmpty(this.AppId))
{
dictionary.Add("client_id", this.AppId);
}
// Automatically add app_id if not present in the parameters
if (!dialog.Equals("oauth", StringComparison.OrdinalIgnoreCase) && !dictionary.ContainsKey("app_id") && !string.IsNullOrEmpty(this.AppId))
{
dictionary.Add("app_id", this.AppId);
}
var sb = new StringBuilder();
sb.AppendFormat(isMobile ? "https://m.facebook.com/" : "https://www.facebook.com/");
if (!string.IsNullOrEmpty(Version))
{
sb.AppendFormat("{0}/", Version);
}
sb.AppendFormat("dialog/{0}?", dialog);
foreach (var kvp in dictionary)
sb.AppendFormat("{0}={1}&", HttpHelper.UrlEncode(kvp.Key), HttpHelper.UrlEncode(BuildHttpQuery(kvp.Value, HttpHelper.UrlEncode)));
sb.Length--;
return new Uri(sb.ToString());
}