/// <summary> /// Получает данные LongPollServer'a /// </summary> /// <param name="accessToken">Token</param> /// <returns>Возвращает объект LongPollServer'a</returns> public ILongPollServer Get(string accessToken) { var urlBuilder = new ApiBuilder(MessagesMethods.MessagesGetLongPollServer, ApiSettings, accessToken); var url = urlBuilder.GenerateUrl(); var requestBuilder = new RequestBuilder<LongPollServer>("response", false); var response = requestBuilder.GetResponse(url); Exception = requestBuilder.Exception; return response; }
/// <summary> /// Отправляет сообщение пользователю /// </summary> /// <param name="userId">Id пользователя вконтакте</param> /// <param name="accessToken">Token</param> /// <param name="message">Текст сообщения</param> /// <returns>Возвращает id сообщения</returns> public int Send(int userId, string accessToken, string message) { var urlBulider = new ApiBuilder(MessagesMethods.MessagesSend, ApiSettings, accessToken); var url = urlBulider.GenerateUrl( MessagesSendParameters.Instance.UserId(userId), MessagesSendParameters.Instance.Message(message) ); var requestBuilder = new RequestBuilder<int>("response", false); var response = requestBuilder.GetResponse(url); Exception = requestBuilder.Exception; return response; }
/// <summary> /// Помечает сообщения как прочитанные /// </summary> /// <param name="friendId">Идентификатор отправителя сообщения</param> /// <param name="accessToken">Token</param> /// <param name="messageIds">Идентификаторы непрочитанных сообщений</param> public int MarkAsRead(int friendId, string accessToken, IEnumerable<int> messageIds) { var urlBulider = new ApiBuilder(MessagesMethods.MessagesMarkAsRead, ApiSettings, accessToken); var url = urlBulider.GenerateUrl( MessagesMarkAsReadParameters.Instance.UserId(friendId), MessagesMarkAsReadParameters.Instance.MessageIds(messageIds) ); var requestBuilder = new RequestBuilder<int>("response", false); var response = requestBuilder.GetResponse(url); Exception = requestBuilder.Exception; return response; }
/// <summary> /// Получает список id пользователей, которые онлайн /// </summary> /// <param name="userId">Id авторизованного пользователя</param> /// <param name="accessToken">Token</param> /// <returns>Возвращает список id пользователей, которые онлайн. Пустой список, если ошибка</returns> public List<int> Get(int userId, string accessToken) { var urlBuilder = new ApiBuilder(FriendsMethods.FriendsGetOnline, ApiSettings, accessToken); var url = urlBuilder.GenerateUrl( FriendsGetOnlineParameters.Instance.UserId(userId) ); var requestBuilder = new RequestBuilder<int>("response", false); var response = requestBuilder.GetResponseArray(url); Exception = requestBuilder.Exception; return response; }
/// <summary> /// Получае последние сообщения /// </summary> /// <param name="accessToken">Token</param> /// <param name="count">Количество последних сообщений</param> public IEnumerable<IDialogMessage> GetLast(string accessToken, int count = 20) { var urlBuilder = new ApiBuilder(MessagesMethods.MessagesGet, ApiSettings, accessToken); var url = urlBuilder.GenerateUrl( MessagesGetParameters.Instance.Count(count) ); var requestBuilder = new RequestBuilder<Message>("items"); var response = requestBuilder.GetResponseArray(url); Exception = requestBuilder.Exception; foreach (var message in response) message.VkUserId = _vkUserId; return response.Cast<IDialogMessage>().OrderBy(x => x.Date).ToList(); }
/// <summary> /// Получает список всех друзей пользователя /// </summary> /// <param name="userId">Id авторизованного пользователя</param> /// <param name="accessToken">Token</param> /// <returns>Возвращает список друзей пользователя. Пустой список если ошибка</returns> public List<IFriend> Get(int userId, string accessToken) { var urlBuilder = new ApiBuilder(FriendsMethods.FriendsGet, ApiSettings, accessToken); var url = urlBuilder.GenerateUrl( FriendsGetParameters.Instance.Order(Orders.Name), FriendsGetParameters.Instance.Fields(new List<string> { UserFields.Photo50 })); var requestBuilder = new RequestBuilder<Friend>("items"); var response = requestBuilder.GetResponseArray(url); foreach (var friend in response) { friend.ParentVkId = userId; friend.Position = response.IndexOf(friend); } Exception = requestBuilder.Exception; return response.Cast<IFriend>().ToList(); }
/// <summary> /// Возвращает историю сообщений с указанным собеседником. /// </summary> /// <param name="friendId">Id собеседника</param> /// <param name="accessToken">Token</param> /// <param name="count">Количество сообщений</param> /// <param name="offset">Смещение</param> /// <returns>Возвращает список сообщений</returns> public IEnumerable<IDialogMessage> GetHistory(int friendId, string accessToken, int count = 20, int offset = 0) { var urlBuilder = new ApiBuilder(MessagesMethods.MessagesGetHistory, ApiSettings, accessToken); var url = urlBuilder.GenerateUrl( MessagesGetHistoryParameters.Instance.Offset(offset), MessagesGetHistoryParameters.Instance.Count(count), MessagesGetHistoryParameters.Instance.UserId(friendId) ); var requestBuilder = new RequestBuilder<DialogMessage>("items"); var response = requestBuilder.GetResponseArray(url); Exception = requestBuilder.Exception; //Задаем, кому было отправлено сообщение foreach (var message in response) { message.VkUserId = _vkUserId; message.VkFriendId = friendId; } var messages = response.Cast<IDialogMessage>().OrderBy(x => x.Date).ToList(); return messages; }