public User(int iUserID, string strUsername, string strEmail, UserClassType strClass, string strTimeZone, bool Dls, int iPlan, int iMaxRems, int iMaxPTPRems, string strBotName) { _contacts = new ArrayList(3); _email = strEmail; _class = strClass; _timezone = strTimeZone; _planID = iPlan; _dls = Dls; _maxNumReminders = iMaxRems; _botname = strBotName; m_buddies = new ArrayList(); _maxNumPTPReminders = iMaxPTPRems; // TODO: change this when bot is switched over to use userid as primary key and not the user's "login name" _userName = strUsername; _userid = iUserID; }
public override ArrayList LoadUsers() { ArrayList retUsers = new ArrayList(); try { string s = @"<?xml version=""1.0"" encoding=""utf-8""?> <request version=""2.71828""> <function name=""LoadUsers""> <argument>" + BotName + @"</argument> </function> </request> "; XmlDocument dataDoc = GetDataDocument(s); XmlNodeList userList = dataDoc.SelectNodes(@"/users/user"); if (userList == null) { // yeah, we neeed exceptions return(retUsers); } foreach (XmlNode userNode in userList) { Hashtable userinfo = new Hashtable(); ArrayList contacts = new ArrayList(); foreach (XmlNode userElementNode in userNode.ChildNodes) { if (userElementNode.Name.ToLower() != "contact") { userinfo[userElementNode.Name.ToLower()] = userElementNode.InnerText; } else { XmlDocument tempDoc = new XmlDocument(); tempDoc.LoadXml(userElementNode.OuterXml); XmlNode serviceNode = tempDoc.SelectSingleNode(@"/contact/service"); if (serviceNode == null) { // ignore this of throw an exception? ignore it for now continue; } XmlNode loginNode = tempDoc.SelectSingleNode(@"/contact/login"); if (loginNode == null) { // same as above? continue; } IMContact cont = new IMContact( loginNode.InnerText, (ConnectionType)Enum.Parse(typeof(ConnectionType), serviceNode.InnerText, true), contacts.Count); contacts.Add(cont); } } UserClassType uct = new UserClassType(); uct = (UserClassType)Enum.Parse(typeof(UserClassType), userinfo["class"].ToString(), true); User newUser = new User( int.Parse(userinfo[@"userid"].ToString()), userinfo[@"username"].ToString(), userinfo[@"email"].ToString(), uct, userinfo[@"timezone"].ToString(), userinfo[@"dls"].ToString() == @"1", int.Parse(userinfo[@"plan"].ToString()), int.Parse(userinfo[@"num_reminders"].ToString()), int.Parse(userinfo[@"num_ptp_reminders"].ToString()), userinfo[@"bot"].ToString()); newUser.Contacts = contacts; retUsers.Add(newUser); } } catch (Exception ex) { } return(retUsers); }
public override User GetUserByUsername(string strUsername) { User newUser = null; Hashtable userinfo = new Hashtable(); string strRequest = @"<?xml version=""1.0"" encoding=""utf-8""?> <request version=""2.71828""> <function name=""GetUserByUsername""> <argument>" + strUsername + @"</argument> </function> </request> "; try { XmlDocument dataDoc = GetDataDocument(strRequest); foreach (XmlNode element in dataDoc.SelectNodes(@"/user/*")) { if (element.Name.ToLower() != "contacts" && element.Name.ToLower() != "buddies") { userinfo[element.Name.ToLower()] = element.InnerText; } } UserClassType uct = (UserClassType)Enum.Parse(typeof(UserClassType), userinfo[@"class"].ToString(), true); newUser = new User( int.Parse(userinfo[@"userid"].ToString()), userinfo[@"username"].ToString(), userinfo[@"email"].ToString(), uct, userinfo[@"timezone"].ToString(), userinfo[@"dls"].ToString() == @"1", int.Parse(userinfo[@"plan"].ToString()), int.Parse(userinfo[@"num_reminders"].ToString()), int.Parse(userinfo[@"num_ptp_reminders"].ToString()), userinfo[@"bot"].ToString()); foreach (XmlNode contact in dataDoc.SelectNodes(@"/user/contacts/contact")) { Hashtable contactInfo = new Hashtable(); foreach (XmlNode contElement in contact.ChildNodes) { contactInfo[contElement.Name] = contElement.InnerText; } newUser.AddContact(new IMContact( contactInfo[@"login"].ToString(), (ConnectionType)Enum.Parse(typeof(ConnectionType), contactInfo[@"service"].ToString(), true), int.Parse(contactInfo[@"priority"].ToString()))); } foreach (XmlNode buddy in dataDoc.SelectNodes(@"/user/buddies/buddy")) { Hashtable buddyInfo = new Hashtable(); foreach (XmlNode buddyElement in buddy.ChildNodes) { buddyInfo[buddyElement.Name] = buddyElement.InnerText; } newUser.Buddies.Add(buddyInfo["buddy"].ToString().ToLower()); } } catch (Exception ex) { } return(newUser); }