public static bool ReissueAuthToken() { Dictionary <string, string> packet = SessionItemContainer.Retrieve(SessionItemContainerKey.AuthPacket) as Dictionary <string, string>; if (packet != null) { string apiurl = packet["__apiurl"]; string apikey = packet["__apikey"]; Dictionary <string, string> parameters = packet.Where(p => !p.Key.StartsWith("__")).ToDictionary(p => p.Key, p => p.Value); XmlNode xToken = LegionService.GetReply(apiurl, apikey, ReplyFormat.XML.ToString(), "__system", "CreateAuthToken", parameters).ToXml().SelectSingleNode("//token"); if (xToken != null) { string token = xToken.InnerText; SessionItemContainer.Store(SessionItemContainerKey.AuthPacket, packet); return(true); } else { return(false); } } else { return(false); } }
/// <summary> /// /// </summary> /// <param name="apikey"></param> /// <param name="apiurl"></param> /// <param name="type"></param> /// <param name="identifier"></param> /// <param name="email"></param> /// <param name="givenname"></param> /// <param name="surname"></param> /// <returns></returns> public static string CreateAuthToken(string apikey, string apiurl, LegionAccountType type, string identifier) { Dictionary <string, string> packet = new Dictionary <string, string>() { { "AccountType", type.ToString() }, { "AccountId", identifier }, { "__apikey", apikey }, { "__apiurl", apiurl } }; Dictionary <string, string> parameters = packet.Where(p => !p.Key.StartsWith("__")).ToDictionary(p => p.Key, p => p.Value); XmlDocument xReply = LegionService.GetReply(apiurl, apikey, ReplyFormat.XML.ToString(), "__system", "CreateAuthToken", parameters).ToXml(); XmlNode xToken = xReply.SelectSingleNode("//token"); if (xToken != null) { string token = xToken.InnerText; SessionItemContainer.Store(SessionItemContainerKey.AuthPacket, packet); return(token); } else { XmlNode xFriendly = xReply.SelectSingleNode("//error/description[@type='friendly']"); if (xFriendly != null) { throw new LegionServiceException(string.Format("{0} ({1}:{2})", xFriendly.InnerText, type, identifier)); } else { XmlNode xError = xReply.SelectSingleNode("//error"); if (xError != null) { throw new LegionServiceException(string.Format("{0} ({1}:{2})", xFriendly.InnerText, type, identifier)); } else { XmlNode xFault = xReply.SelectSingleNode("//fault"); if (xFault != null) { throw new LegionServiceException(string.Format("{0} ({1})", xFault.InnerText, xFault.Attributes["type"].Value)); } else { throw new LegionServiceException("Unknown error. Unable to parse CreateAuthToken() response."); } } } } }
private static string GetReply(string apiurl, string apikey, string replyformat, string service, string method, Dictionary <string, string> p) { if (apiurl == null) { apiurl = LEGION_URL; } Dictionary <string, string> pToPass; if (p == null) { pToPass = new Dictionary <string, string>(); } else if (p.ContainsKey(USER_IP_KEY)) { throw new Exception(string.Format("Reserved parameter '{0}' found in parameter set", USER_IP_KEY)); } else { pToPass = p.Clone(); } string authtoken = SessionItemContainer.Retrieve(SessionItemContainerKey.AuthToken) as string; if (authtoken != null) { pToPass.Add(AUTH_TOKEN_KEY, authtoken); } pToPass.Add(USER_IP_KEY, HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]); Uri uri = new Uri(string.Format("{0}/{1}/{2}/{3}/?k={4}", apiurl, service, method, replyformat, apikey)); WebClient client = new WebClient(); client.Headers["Content-type"] = "application/x-www-form-urlencoded"; string reply = client.UploadString(uri, pToPass.Flatten()); return(reply); }