private string ProcessMessageFilter(VkMessageFilter filter) { string response = string.Empty; switch (filter) { case VkMessageFilter.NotChat: response = "2"; break; case VkMessageFilter.NeverReaded: response = "1"; break; case VkMessageFilter.FromFriends: response = "4"; break; default: return string.Empty; } return response; }
/// <summary> /// Получение списка сообщений /// </summary> /// <param name="mout">если этот параметр равен 1, сервер вернет исходящие сообщения</param> /// <param name="offset">смещение, необходимое для выборки определенного подмножества сообщений</param> /// <param name="count">количество сообщений, которое необходимо получить (но не более 100). </param> /// <param name="filter">Фильтр сообщений</param> /// <param name="previewLength">Количество симоволов по которому нужно обрезать сообщение.(по умолчанию 90).</param> /// <param name="timeoffset">Макисмальное время прошедшее с момента отправки сообщения до текущего момента в секундах. 0, если Вы хотите получить сообщения любой давности.</param> /// <returns>Список сообщений</returns> public List<UserMessage> GetUserMessages(string mout, string offset, string count, VkMessageFilter filter, string previewLength, string timeoffset) { if (IsConnected && (Settings & (int)VKSettings.ExMessages) != 0) { List<VKParameter> parameters = new List<VKParameter>(); if (!string.IsNullOrEmpty(mout)) parameters.Add(new VKParameter("out", mout)); if (!string.IsNullOrEmpty(offset)) parameters.Add(new VKParameter("offset", offset)); if (!string.IsNullOrEmpty(count)) parameters.Add(new VKParameter("count", count)); if (!string.IsNullOrEmpty(ProcessMessageFilter(filter))) parameters.Add(new VKParameter("filter", ProcessMessageFilter(filter))); if (!string.IsNullOrEmpty(previewLength)) parameters.Add(new VKParameter("preview_length", previewLength)); if (!string.IsNullOrEmpty(timeoffset)) parameters.Add(new VKParameter("time_offset", timeoffset)); XmlDocument doc = ExecuteMethodByToken("messages.get", parameters); if (!HasError(doc)) { DataSet ds = new DataSet("tempDS"); StringReader sr = new StringReader(doc.InnerXml); ds.ReadXml(sr, XmlReadMode.InferSchema); List<UserMessage> messages = null; if (ds.Tables["message"] != null && ds.Tables["message"].Rows.Count > 0) { messages = new List<UserMessage>(ds.Tables["message"].Rows.Count); foreach (DataRow dr in ds.Tables["message"].Rows) { if (ds.Relations.Contains("message_attachment")) { DataRow[] rows = dr.GetChildRows(ds.Relations["message_attachment"]); if (rows != null && rows.Length > 0) { messages.Add(new UserMessage(dr, rows[0])); } } messages.Add(new UserMessage(dr)); } } return messages; } else return null; } return null; }