/// <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;
        }
Exemple #2
0
        /// <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;
        }