예제 #1
0
        /// <summary>
        /// Возвращает коллекцию базовых профилей запрошенных пользователей.
        /// </summary>
        /// <param name="callback">Метод, который будет вызван по завершении операции.
        /// Параметр является результатом запроса.</param>
        /// <param name="userIDs">Коллекция идентификаторов пользователей,
        /// профили которых требуется получить.</param>
        /// <param name="nameCase">Падеж имени пользователя.</param>
        /// <exception cref="ArgumentOutOfRangeException"></exception>
        public void GetBaseUsers(Action <VKResponse <List <VKProfileBase> > > callback,
                                 List <long> userIDs = null, VKUserNameCase nameCase = VKUserNameCase.nom)
        {
            if (userIDs != null && (userIDs.Count == 0 || userIDs.Count() > 100))
            {
                throw new ArgumentOutOfRangeException("userIDs",
                                                      "Коллекция идентификаторов должна содержать от одного до ста элементов. " +
                                                      "Если вам требуется получить профиль текущего пользователя, используйте null.");
            }

            var parameters = new Dictionary <string, string>();

            parameters["fields"] = "status,online,online_mobile,photo_50,photo_100,photo_200";
            if (nameCase != VKUserNameCase.nom)
            {
                parameters["name_case"] = nameCase.ToString();
            }
            if (userIDs != null)
            {
                if (userIDs.Count == 1)
                {
                    parameters["user_ids"] = userIDs.First().ToString();
                }
                else
                {
                    parameters["user_ids"] = String.Join(",", userIDs);
                }
            }

            VKHelper.GetResponse <List <VKProfileBase> >(VKMethodsConstants.UsersGet, parameters, callback);
        }
예제 #2
0
        /// <summary>
        /// Возвращает коллекцию базовых профилей запрошенных пользователей.
        /// </summary>
        /// <param name="callback">Метод, который будет вызван по завершении операции.
        /// Параметр является результатом запроса.</param>
        /// <param name="userIDs">Коллекция идентификаторов пользователей,
        /// профили которых требуется получить.</param>
        /// <param name="nameCase">Падеж имени пользователя.</param>
        /// <exception cref="ArgumentOutOfRangeException"></exception>
        public void GetExtendedUsers(Action <VKResponse <List <VKProfileExtended> > > callback,
                                     List <long> userIDs = null, List <VKUserFields> fields = null, VKUserNameCase nameCase = VKUserNameCase.nom)
        {
            if (userIDs != null && (userIDs.Count == 0 || userIDs.Count() > 100))
            {
                throw new ArgumentOutOfRangeException("userIDs",
                                                      "Коллекция идентификаторов должна содержать от одного до ста элементов. " +
                                                      "Если вам требуется получить профиль текущего пользователя, используйте null.");
            }
            if (fields != null && fields.Count() == 0)
            {
                throw new ArgumentOutOfRangeException("fields",
                                                      "Коллекция полей должна содержать как минимум один элемент. " +
                                                      "Если вам требуется получить все данные, используйте null.");
            }

            var parameters = new Dictionary <string, string>();

            if (nameCase != VKUserNameCase.nom)
            {
                parameters["name_case"] = nameCase.ToString();
            }
            if (userIDs != null)
            {
                if (userIDs.Count == 1)
                {
                    parameters["user_ids"] = userIDs.First().ToString();
                }
                else
                {
                    parameters["user_ids"] = String.Join(",", userIDs);
                }
            }
            if (fields == null)
            {
                parameters["fields"] = "sex,bdate,city,country,photo_50,photo_100"
                                       + ",photo_200_orig,photo_200,photo_400_orig,photo_max,photo_max_orig,online,online_mobile"
                                       + ",has_mobile,site,education,universities,schools,can_post,can_see_all_posts"
                                       + ",can_see_audio,can_write_private_message,status,relation,occupation,activities"
                                       + ",interests,music,movies,tv,books,games,about,quotes";
            }
            else
            {
                var builder = new StringBuilder();
                for (int i = 0; i < fields.Count; i++)
                {
                    builder.Append(fields[i] + ",");
                }
                parameters["fields"] = builder.ToString();
            }

            VKHelper.GetResponse <List <VKProfileExtended> >(VKMethodsConstants.UsersGet, parameters, callback);
        }
예제 #3
0
        /// <summary>
        /// Возвращает список списков друзей пользователя ВКонтакте.
        /// </summary>
        /// <param name="callback">Метод, который будет вызван по завершении операции.
        /// Параметр является результатом запроса.</param>
        /// <param name="request">Объект запроса с необходимыми параметрами.</param>
        //public void GetFriendsLists(Action<VKResponse<VKCountedItemsObject<VKFriendsList>>> callback,
        //    GetFriendsListsRequest request)
        //{
        //    VKHelper.GetResponse<VKCountedItemsObject<VKFriendsList>>(request, callback);
        //}

        /// <summary>
        /// Создает новый список друзей.
        /// </summary>
        /// <param name="callback">Метод, который будет вызван по завершении операции.
        /// Параметр является результатом запроса.</param>
        /// <param name="request">Объект запроса с необходимыми параметрами.</param>
        public void AddFriendsList(Action <VKResponse <int> > callback,
                                   AddFriendsListRequest request)
        {
            VKHelper.GetResponse <AddListResponse>(request,
                                                   (response) =>
            {
                var result = new VKResponse <int>()
                {
                    Error = response.Error
                };
                result.Response = response.Response.ListID;
                callback(result);
            });
        }
예제 #4
0
        /// <summary>
        /// Пожаловаться на пользователя.
        /// </summary>
        /// <param name="callback">Метод, который будет вызван по завершении операции.
        /// Параметр является результатом запроса.</param>
        /// <param name="userID">Идентификатор пользователя.</param>
        /// <param name="type">Тип жалобы.</param>
        /// <param name="comment">Комментарий к жалобе.</param>
        /// <exception cref="ArgumentOutOfRangeException"></exception>
        public void ReportUser(Action <VKResponse <VKOperationIsSuccess> > callback,
                               long userID, VKBoolean type, string comment = "")
        {
            if (userID <= 0)
            {
                throw new ArgumentOutOfRangeException("userID",
                                                      "Идентификатор пользователя должен быть явно указан.");
            }

            var parameters = new Dictionary <string, string>();

            parameters["user_id"] = userID.ToString();
            parameters["type"]    = type.ToString();
            if (!String.IsNullOrWhiteSpace(comment))
            {
                parameters["comment"] = comment;
            }

            VKHelper.GetResponse <VKOperationIsSuccess>(VKMethodsConstants.UserReport, parameters, callback);
        }
예제 #5
0
        /// <summary>
        /// Получить подписчиков пользователя.
        /// </summary>
        /// <param name="callback">Метод, который будет вызван по завершении операции.
        /// Параметр является результатом запроса.</param>
        /// <param name="userID">Идентификатор пользователя.</param>
        /// <param name="count">Количество пользователей, которое требуется
        /// вернуть (не более 1000).</param>
        /// <param name="offset">Смещение относительно начала списка
        /// (не более 1000).</param>
        /// <param name="nameCase">Падеж имени пользователя.</param>
        /// <exception cref="ArgumentOutOfRangeException"></exception>
        public void GetFollowers(Action <VKResponse <VKCountedItemsObject <VKProfileBase> > > callback,
                                 long userID = 0, int count = 100, int offset = 0, VKUserNameCase nameCase = VKUserNameCase.nom)
        {
            if (count <= 0 || count > 1000)
            {
                throw new ArgumentOutOfRangeException("count",
                                                      "Количество элементов должно быть больше нуля, но меньше 1000.");
            }
            if (offset < 0 || offset > 1000)
            {
                throw new ArgumentOutOfRangeException("offset",
                                                      "Смещение должно быть не менее нуля, но не более 1000.");
            }
            if (userID < 0)
            {
                throw new ArgumentOutOfRangeException("userID",
                                                      "Идентификатор пользователя не может быть отрицательным.");
            }

            var parameters = new Dictionary <string, string>();

            if (userID > 0)
            {
                parameters["user_id"] = userID.ToString();
            }
            if (count != 100)
            {
                parameters["count"] = count.ToString();
            }
            if (offset > 0)
            {
                parameters["offset"] = offset.ToString();
            }
            if (nameCase != VKUserNameCase.nom)
            {
                parameters["name_case"] = nameCase.ToString();
            }

            VKHelper.GetResponse <VKCountedItemsObject <VKProfileBase> >(VKMethodsConstants.UserGetFollowers,
                                                                         parameters, callback);
        }
예제 #6
0
        /// <summary>
        /// Возвращает список друзей пользователя.
        /// </summary>
        /// <param name="callback">Метод, который будет вызван по завершении операции.
        /// Параметр является результатом запроса.</param>
        /// <param name="request">Объект запроса с необходимыми параметрами.</param>
        //public void GetFriends(Action<VKResponse<VKCountedItemsObject<VKProfileBase>>> callback,
        //    GetFriendsRequest request)
        //{
        //    VKHelper.GetResponse<VKCountedItemsObject<VKProfileBase>>(request, callback);
        //}

        /// <summary>
        /// Возвращает список идентификаторов друзей пользователя, находящихся
        /// в данные момент в сети.
        /// </summary>
        /// <param name="callback">Метод, который будет вызван по завершении операции.
        /// Параметр является результатом запроса.</param>
        /// <param name="request">Объект запроса с необходимыми параметрами.</param>
        //public void GetOnlineFriends(Action<VKResponse<VKGetOnlineFriendsObject>> callback,
        //    GetOnlineFriendsRequest request)
        //{
        //    if (request.OnlineMobile == VKBoolean.True)
        //        VKHelper.GetResponse<VKGetOnlineFriendsObject>(request, callback);
        //    else
        //        VKHelper.GetResponse<List<long>>(request, (response) =>
        //            {
        //                var result = new VKResponse<VKGetOnlineFriendsObject>();
        //                result.Error = response.Error;
        //                result.Response.Online = response.Response;
        //                callback(result);
        //            });
        //}

        /// <summary>
        /// Возвращаетс идентификаторы общих с пользователем друзей.
        /// </summary>
        /// <param name="callback">Метод, который будет вызван по завершении операции.
        /// Параметр является результатом запроса.</param>
        /// <param name="request">Объект запроса с необходимыми параметрами.</param>
        public void GetMutualFrends(Action <VKResponse <List <VKCommonFriendsObject> > > callback,
                                    GetMutualFriendsRequest request)
        {
            if (!request.IsSingle)
            {
                VKHelper.GetResponse <List <VKCommonFriendsObject> >(request, callback);
            }
            else
            {
                VKHelper.GetResponse <List <long> >(request, (response) =>
                {
                    var result = new VKResponse <List <VKCommonFriendsObject> > {
                        Error = response.Error
                    };
                    result.Response.Add(new VKCommonFriendsObject
                    {
                        ID = request.TargetID, CommonFriends = response.Response, CommonCount = -1
                    });
                    callback(result);
                });
            }
        }
예제 #7
0
 /// <summary>
 /// Возвращает список документов пользователя или сообщества по их идентификаторам.
 /// </summary>
 /// <param name="callback">Метод, который будет вызван по завершении операции.
 /// Параметр является результатом запроса.</param>
 /// <param name="request">Объект запроса с необходимыми параметрами.</param>
 public void GetDocsByID(Action <VKResponse <List <VKDocument> > > callback, GetDocsByIDRequest request)
 {
     VKHelper.GetResponse <List <VKDocument> >(request, callback);
 }
예제 #8
0
 /// <summary>
 /// Возвращает список документов пользователя или сообщества.
 /// </summary>
 /// <param name="callback">Метод, который будет вызван по завершении операции.
 /// Параметр является результатом запроса.</param>
 /// <param name="request">Объект запроса с необходимыми параметрами.</param>
 public void GetDocs(Action <VKResponse <VKCountedItemsObject <VKDocument> > > callback, GetDocsRequest request)
 {
     VKHelper.GetResponse <VKCountedItemsObject <VKDocument> >(request, callback);
 }
예제 #9
0
        public TestPageOld()
        {
            InitializeComponent();

            Logout                 = new RelayCommand(() => VKHelper.Reset());
            GetUniqueDeviceID      = new RelayCommand(async() => await(new MessageDialog(CoreHelper.GetUniqueDeviceID(), "UniqueDeviceID")).ShowAsync());
            GetDeviceName          = new RelayCommand(async() => await(new MessageDialog(CoreHelper.GetDeviceName(), "DeviceName")).ShowAsync());
            GetOperatingSystemName = new RelayCommand(async() => await(new MessageDialog(CoreHelper.GetOperatingSystemName(), "OperatingSystem")).ShowAsync());
            CaptchaForce           = new RelayCommand(async() => await(new CaptchaForceRequest()).ExecuteAsync());
            ShowLocalFolderPath    = new RelayCommand(async() => await(new MessageDialog(ApplicationData.Current.LocalFolder.Path, "LocalFolder Path")).ShowAsync());
            TurnOnNotification     = new RelayCommand(async() =>
            {
                bool result = await NotificationsHelper.Connect();
                await(new MessageDialog(result ? "Success" : "Fail", "Push notifications")).ShowAsync();
            });

            TestMessageFlags = new RelayCommand(async() =>
            {
                var flags = (VKMessageFlags)243;
                await(new MessageDialog(flags.ToString(), "243 as VKMessageFlags")).ShowAsync();
                flags = (VKMessageFlags)241;
                await(new MessageDialog(flags.ToString(), "241 as VKMessageFlags")).ShowAsync();
            });
            StartLongPolling = new RelayCommand(() =>
            {
                ServiceHelper.VKLongPollService.StartLongPolling();
                StopLongPolling.RaiseCanExecuteChanged();
                StartLongPolling.RaiseCanExecuteChanged();
            }, () => true);
            StopLongPolling = new RelayCommand(() =>
            {
                ServiceHelper.VKLongPollService.StopLongPolling();
                StartLongPolling.RaiseCanExecuteChanged();
                StopLongPolling.RaiseCanExecuteChanged();
            }, () => true);

            ShowToast = new RelayCommand(() =>
            {
                ((ChromeFrame)Frame).ShowPopup(new PopupMessage
                {
                    Title     = "Добро пожаловать в OneVK", Content = "Это уведомление вернет вас на тестовую страницу",
                    Parameter = new NavigateToPageMessage()
                    {
                        Page = AppViews.TestView
                    },
                    Type = PopupMessageType.Info
                });
            });

            GoToBotView = new RelayCommand(() =>
            {
                Messenger.Default.Send <NavigateToPageMessage>(new NavigateToPageMessage
                {
                    Page      = AppViews.BotView,
                    Operation = NavigationType.New
                });
            });
            GoToBlankPage = new RelayCommand(() => Frame.Navigate(typeof(BlankPage1)));

            ClearBadgeTile = new RelayCommand(() =>
            {
                BadgeUpdateManager.CreateBadgeUpdaterForApplication().Clear();
            });

            SendBadgeTile = new RelayCommand(() =>
            {
                var badge = new BadgeNumericNotificationContent(7).CreateNotification();
                BadgeUpdateManager.CreateBadgeUpdaterForApplication().Update(badge);
            });

            SendMessageTile = new RelayCommand(() =>
            {
                var tile           = TileContentFactory.CreateTileSquare150x150IconWithBadge();
                tile.ImageIcon.Src = "ms-appx:///Assets/BadgeIcon.png";
                TileUpdateManager.CreateTileUpdaterForApplication().Update(tile.CreateNotification());

                var badge = new BadgeNumericNotificationContent(7).CreateNotification();
                BadgeUpdateManager.CreateBadgeUpdaterForApplication().Update(badge);
            });

            SendToast = new RelayCommand(() =>
            {
                var toast               = ToastContentFactory.CreateToastText02();
                toast.Audio.Content     = ToastAudioContent.IM;
                toast.Duration          = ToastDuration.Long;
                toast.TextHeading.Text  = "OneVK";
                toast.TextBodyWrap.Text = "Это тестовое уведомление";

                ToastNotificationManager.CreateToastNotifier().Show(toast.CreateNotification());
            });

            StartVKSaver = new RelayCommand(async() =>
            {
                IVKSaverCommand command = new VKSaverStartAppCommand();
                await command.TryExecute();
            });
        }
예제 #10
0
 /// <summary>
 /// Редактирует списки для друга.
 /// </summary>
 /// <param name="callback">Метод, который будет вызван по завершении операции.
 /// Параметр является результатом запроса.</param>
 /// <param name="request">Объект запроса с необходимыми параметрами.</param>
 public void EditFriend(Action <VKResponse <VKOperationIsSuccess> > callback,
                        EditFriendRequest request)
 {
     VKHelper.GetResponse <VKOperationIsSuccess>(request, callback);
 }
예제 #11
0
 /// <summary>
 /// Восстанавливает удаленную видеозапись.
 /// </summary>
 /// <param name="callback">Метод, который будет вызван по завершении операции.
 /// Параметр является результатом запроса.</param>
 /// <param name="request">Объект запроса с необходимыми параметрами.</param>
 public void Restore(Action <VKResponse <VKOperationIsSuccess> > callback, RestoreVideoRequest request)
 {
     VKHelper.GetResponse <VKOperationIsSuccess>(request, callback);
 }
예제 #12
0
 private void Button_Click(object sender, RoutedEventArgs e)
 {
     VKHelper.Reset();
 }
예제 #13
0
 /// <summary>
 /// Удаляет документ пользователя или группы.
 /// </summary>
 /// <param name="callback">Метод, который будет вызван по завершении операции.
 /// Параметр является результатом запроса.</param>
 /// <param name="request">Объект запроса с необходимыми параметрами.</param>
 public void DeleteDocument(Action <VKResponse <VKOperationIsSuccess> > callback, DeleteDocRequest request)
 {
     VKHelper.GetResponse <VKOperationIsSuccess>(request, callback);
 }
예제 #14
0
 /// <summary>
 /// Одобряет или создает заявку на добавление в друзья.
 /// </summary>
 /// <param name="callback">Метод, который будет вызван по завершении операции.
 /// Параметр является результатом запроса.</param>
 /// <param name="request">Объект запроса с необходимыми параметрами.</param>
 public void AddFriend(Action <VKResponse <VKAddFriend> > callback, AddFriendRequest request)
 {
     VKHelper.GetResponse <VKAddFriend>(request, callback);
 }
예제 #15
0
 /// <summary>
 /// Возвращает список идентификаторов последних добавленных друзей.
 /// </summary>
 /// <param name="callback">Метод, который будет вызван по завершении операции.
 /// Параметр является результатом запроса.</param>
 /// <param name="request">Объект запроса с необходимыми параметрами.</param>
 public void GetRecentFriends(Action <VKResponse <List <long> > > callback,
                              GetRecentFriendsRequest request)
 {
     VKHelper.GetResponse <List <long> >(request, callback);
 }
예제 #16
0
 /// <summary>
 /// Выполняет поиск по друзьям пользователя.
 /// </summary>
 /// <param name="callback">Метод, который будет вызван по завершении операции.
 /// Параметр является результатом запроса.</param>
 /// <param name="request">Объект запроса с необходимыми параметрами.</param>
 public void SearchFriends(Action <VKResponse <VKCountedItemsObject <VKProfileBase> > > callback,
                           SearchFriendsRequest request)
 {
     VKHelper.GetResponse <VKCountedItemsObject <VKProfileBase> >(request, callback);
 }
예제 #17
0
 /// <summary>
 /// Отмечает все входящие заявки на добавление в друзья как просмотренные.
 /// </summary>
 /// <param name="callback">Метод, который будет вызван по завершении операции.
 /// Параметр является результатом запроса.</param>
 public void DeleteAllFriendsRequests(Action <VKResponse <VKOperationIsSuccess> > callback)
 {
     VKHelper.GetResponse <VKOperationIsSuccess>(VKMethodsConstants.FriendsDeleteAllRequests,
                                                 callback);
 }
예제 #18
0
 /// <summary>
 /// Возвращает список идентификаторов друзей текущего
 /// пользователя, которые установили данное приложение.
 /// </summary>
 /// <param name="callback">Метод, который будет вызван по завершении операции.
 /// Параметр является результатом запроса.</param>
 public void GetFriendsAppUsers(Action <VKResponse <List <long> > > callback)
 {
     VKHelper.GetResponse <List <long> >(VKMethodsConstants.FriendsGetAppUsers,
                                         callback);
 }
예제 #19
0
 /// <summary>
 /// Удалить список друзей ВКонтакте.
 /// </summary>
 /// <param name="callback">Метод, который будет вызван по завершении операции.
 /// Параметр является результатом запроса.</param>
 /// <param name="request">Объект запроса с необходимыми параметрами.</param>
 public void DeleteFriendsList(Action <VKResponse <VKOperationIsSuccess> > callback,
                               DeleteFriendsListRequest request)
 {
     VKHelper.GetResponse <VKOperationIsSuccess>(request, callback);
 }
예제 #20
0
 /// <summary>
 /// Возвращает сервер для загрузки документа в папку "Отправленные" для
 /// последующей отправки на стену или личным сообщением.
 /// </summary>
 /// <param name="callback">Метод, который будет вызван по завершении операции.
 /// Параметр является результатом запроса.</param>
 /// <param name="request">Объект запроса с необходимыми параметрами.</param>
 public void GetDocsWallUploadServer(Action <VKResponse <VKUploadServerBase> > callback, GetDocsWallUploadServerRequest request)
 {
     VKHelper.GetResponse <VKUploadServerBase>(request, callback);
 }
예제 #21
0
 /// <summary>
 /// Добавляет документ в коллекцию пользователя.
 /// Возвращает идентификатор добавленного документа.
 /// </summary>
 /// <param name="callback">Метод, который будет вызван по завершении операции.
 /// Параметр является результатом запроса.</param>
 /// <param name="request">Объект запроса с необходимыми параметрами.</param>
 public void AddDocument(Action <VKResponse <long> > callback, AddDocRequest request)
 {
     VKHelper.GetResponse <long>(request, callback);
 }
예제 #22
0
 /// <summary>
 /// Выполнить запрос и вернуть результат.
 /// </summary>
 public async Task <VKResponse <T> > ExecuteAsync(CancellationToken ct = default(CancellationToken))
 {
     return(await VKHelper.GetResponse <T>(this, ct));
 }
예제 #23
0
 /// <summary>
 /// Сохраняет документ после успешной загрузки.
 /// </summary>
 /// <param name="callback">Метод, который будет вызван по завершении операции.
 /// Параметр является результатом запроса.</param>
 /// <param name="request">Объект запроса с необходимыми параметрами.</param>
 public void SaveDocument(Action <VKResponse <List <VKDocument> > > callback, SaveDocRequest request)
 {
     VKHelper.GetResponse <List <VKDocument> >(request, callback);
 }
예제 #24
0
 /// <summary>
 /// Возвращает адрес сервера (необходимый для загрузки) и данные видеозаписи.
 /// </summary>
 /// <param name="callback">Метод, который будет вызван по завершении операции.
 /// Параметр является результатом запроса.</param>
 /// <param name="request">Объект запроса с необходимыми параметрами.</param>
 public void Save(Action <VKResponse <VKVideoUploadServer> > callback, SaveVideoRequest request)
 {
     VKHelper.GetResponse <VKVideoUploadServer>(request, callback);
 }
예제 #25
0
        /// <summary>
        /// Выполняет поиск среди пользователей ВКонтакте.
        /// </summary>
        /// <param name="callback">Метод, который будет вызван по завершении операции.
        /// Параметр является результатом запроса.</param>
        /// <param name="q">Строка запроса.</param>
        /// <param name="sortMode">Метод сортировки результатов.
        /// По популярности и по дате регистрации.</param>
        /// <param name="count">Количество результатов, которое требуется вернуть.
        /// Не более 1000.</param>
        /// <param name="offset">Смещение относительно начала коллекции результатов.
        /// Не более 1000.</param>
        /// <param name="cityID">Идентификатор города.</param>
        /// <param name="countryID">Идентификатор страны.</param>
        /// <param name="homeTown">Название родного города.</param>
        /// <param name="universityCountryID">Идентификатор страны, в которой находится университет,
        /// в котором учился пользователь.</param>
        /// <param name="universityID">Идентификатор университета, в котором учился пользователь.</param>
        /// <param name="universityYear">Год окончания университета.</param>
        /// <param name="universityFacultyID">Идентификатор факультета, в котором
        /// учился польхователь.</param>
        /// <param name="universityChairID">Идентификатор кафедры, на которой учился пользователь.</param>
        /// <param name="sex">Пол пользователя.</param>
        /// <param name="relation">Семейное положение пользователя.</param>
        /// <param name="ageFrom">Выполнять поиск по пользователям с этого возраста.</param>
        /// <param name="ageTo">Выполнять поиск по пользователям не старше этого вораста.</param>
        /// <param name="birthDay">День рождения.</param>
        /// <param name="birthMonth">Месяц рождения.</param>
        /// <param name="birthYear">Год рождения.</param>
        /// <param name="online">Находится ли польователь в сети.</param>
        /// <param name="hasPhoto">Имеется ли фотография в профиле.</param>
        /// <param name="schoolCountryID">Идентификатор страны, в которой находится школа,
        /// в которой учился пользователь.</param>
        /// <param name="schoolCityID">Идентификатор города, в котором находится школа.</param>
        /// <param name="schoolClass">Номер класса.</param>
        /// <param name="schoolID">Идентификатор школы.</param>
        /// <param name="schoolYear">Год окончания школы.</param>
        /// <param name="religion">Мировоззрение.</param>
        /// <param name="interests">Интересы.</param>
        /// <param name="companyName">Название компании, в которой работает пользователь.</param>
        /// <param name="position">Должность.</param>
        /// <param name="groupID">Идентификатор группы, по пользователям которой требуется искать.</param>
        /// <exception cref="ArgumentOutOfRangeException"></exception>
        /// <exception cref="ArgumentException"></exception>
        public void SearchUsers(Action <VKResponse <VKCountedItemsObject <VKProfileBase> > > callback,
                                string q, VKMediaSearchSortMode sortMode = VKMediaSearchSortMode.ByPopularity, int count = 20,
                                int offset = 0, int cityID = 0, int countryID = 0, string homeTown = "",
                                int universityCountryID = 0, int universityID             = 0, int universityYear = 0,
                                int universityFacultyID = 0, int universityChairID        = 0, VKUserSex sex      = VKUserSex.Unknown,
                                VKRelation relation     = VKRelation.Unknown, int ageFrom = 0, int ageTo          = 0,
                                int birthDay            = 0, int birthMonth = 0, int birthYear = 0, VKBoolean online = VKBoolean.False,
                                VKBoolean hasPhoto      = VKBoolean.False, int schoolCountryID = 0, int schoolCityID = 0,
                                int schoolClass         = 0, int schoolID        = 0, int schoolYear   = 0, string religion = "",
                                string interests        = "", string companyName = "", string position = "", long groupID   = 0)
        {
            if (count <= 0 || count > 1000)
            {
                throw new ArgumentOutOfRangeException("count",
                                                      "Количество элементов должно быть больше нуля, но меньше 1000.");
            }
            if (offset < 0 || offset > 1000)
            {
                throw new ArgumentOutOfRangeException("offset",
                                                      "Смещение должно быть не менее нуля, но не более 1000.");
            }
            if (String.IsNullOrWhiteSpace(q))
            {
                throw new ArgumentException("q",
                                            "Строка запроса не должна быть пустой.");
            }
            if (sortMode == VKMediaSearchSortMode.ByDuration)
            {
                throw new ArgumentException("sortMode",
                                            "Для коллекции пользователей невозможен метод сортировки по длительности.");
            }
            if (cityID < 0 || countryID < 0 || universityCountryID < 0 || universityID < 0 ||
                universityYear < 0 || universityFacultyID < 0 || universityChairID < 0 ||
                ageFrom < 0 || ageTo < 0 || birthDay < 0 || birthMonth < 0 || birthYear < 0 ||
                schoolCountryID < 0 || schoolCityID < 0 || schoolClass < 0 || schoolID < 0 ||
                schoolYear < 0 || groupID < 0)
            {
                throw new ArgumentOutOfRangeException(null, "Параметр не может быть отрицательным.");
            }

            var parameters = new Dictionary <string, string>();

            parameters["q"]      = Uri.EscapeDataString(q);
            parameters["fields"] = "status,online,online_mobile,photo_50,photo_100,photo_200";
            if (count != 20)
            {
                parameters["count"] = count.ToString();
            }
            if (offset > 0)
            {
                parameters["offset"] = offset.ToString();
            }
            if (cityID > 0)
            {
                parameters["city"] = cityID.ToString();
            }
            if (countryID > 0)
            {
                parameters["country"] = countryID.ToString();
            }
            if (universityCountryID > 0)
            {
                parameters["university_country"] = universityCountryID.ToString();
            }
            if (universityID > 0)
            {
                parameters["university"] = universityID.ToString();
            }
            if (universityYear > 0)
            {
                parameters["university_year"] = universityYear.ToString();
            }
            if (universityFacultyID > 0)
            {
                parameters["university_faculty"] = universityFacultyID.ToString();
            }
            if (universityChairID > 0)
            {
                parameters["university_chair"] = universityChairID.ToString();
            }
            if (ageFrom > 0)
            {
                parameters["age_from"] = ageFrom.ToString();
            }
            if (ageTo > 0)
            {
                parameters["age_to"] = ageTo.ToString();
            }
            if (birthDay > 0)
            {
                parameters["birth_day"] = birthDay.ToString();
            }
            if (birthMonth > 0)
            {
                parameters["birth_month"] = birthMonth.ToString();
            }
            if (birthYear > 0)
            {
                parameters["birth_year"] = birthYear.ToString();
            }
            if (schoolCountryID > 0)
            {
                parameters["school_country"] = schoolCountryID.ToString();
            }
            if (schoolCityID > 0)
            {
                parameters["school_city"] = schoolCityID.ToString();
            }
            if (schoolClass > 0)
            {
                parameters["school_class"] = schoolClass.ToString();
            }
            if (schoolID > 0)
            {
                parameters["school"] = schoolID.ToString();
            }
            if (schoolYear > 0)
            {
                parameters["school_year"] = schoolYear.ToString();
            }
            if (groupID > 0)
            {
                parameters["group_id"] = groupID.ToString();
            }
            if (sex != VKUserSex.Unknown)
            {
                parameters["sex"] = ((byte)sex).ToString();
            }
            if (relation != VKRelation.Unknown)
            {
                parameters["status"] = ((byte)relation).ToString();
            }
            if (online == VKBoolean.True)
            {
                parameters["online"] = "1";
            }
            if (hasPhoto == VKBoolean.True)
            {
                parameters["has_photo"] = "1";
            }
            if (sortMode == VKMediaSearchSortMode.ByDate)
            {
                parameters["sort"] = "1";
            }
            if (!String.IsNullOrWhiteSpace(homeTown))
            {
                parameters["hometown"] = homeTown;
            }
            if (!String.IsNullOrWhiteSpace(religion))
            {
                parameters["religion"] = religion;
            }
            if (!String.IsNullOrWhiteSpace(interests))
            {
                parameters["interests"] = interests;
            }
            if (!String.IsNullOrWhiteSpace(companyName))
            {
                parameters["company"] = companyName;
            }
            if (!String.IsNullOrWhiteSpace(position))
            {
                parameters["position"] = position;
            }

            VKHelper.GetResponse <VKCountedItemsObject <VKProfileBase> >(VKMethodsConstants.UsersSearch,
                                                                         parameters, callback);
        }
예제 #26
0
        /// <summary>
        /// Запускает процесс авторизации в социальной сети ВКонтакте.
        /// </summary>
        /// <param name="userName">Имя пользователя, email или номер телефона.</param>
        /// <param name="password">Пароль.</param>
        /// <exception cref="ArgumentException"></exception>
        public void LogIn(string userName, string password)
        {
            if (ClientID == 0)
            {
                throw  new InvalidOperationException("ClientId is 0");
            }
            if (String.IsNullOrEmpty(ClientSecret))
            {
                throw new InvalidOperationException("ClientSecret is empty");
            }

            if (String.IsNullOrWhiteSpace(userName))
            {
                throw new ArgumentException("userName", "Логин не может быть пустым.");
            }
            if (String.IsNullOrWhiteSpace(password))
            {
                throw new ArgumentException("password", "Пароль не может быть пустым.");
            }

            var parameters = new Dictionary <string, string>();

            parameters["grant_type"]    = GrantType;
            parameters["client_id"]     = ClientID.ToString();
            parameters["client_secret"] = ClientSecret;
            parameters["username"]      = userName;
            parameters["password"]      = password;
            parameters["scope"]         = Scope;
            parameters["v"]             = VKMethodsConstants.ApiVersion;

#if ONEVK_CORE
            VKHelper.GetLoginResponse(parameters,
                                      (response) =>
            {
                if (response.ErrorName == AppConstants.NeedValidation)
                {
                    Messenger.Default.Send <LoginMessage>(
                        new LoginMessage()
                    {
                        State = VKLoginStates.NeedValidation, RedirectURL = response.RedirectURL
                    });
                }
                else if (response.ErrorName == AppConstants.InvalidClient)
                {
                    Messenger.Default.Send <LoginMessage>(new LoginMessage()
                    {
                        State = VKLoginStates.InvalidClient
                    });
                }
                else if (response.ErrorName == AppConstants.CaptchaCanceled)
                {
                    Messenger.Default.Send <LoginMessage>(new LoginMessage()
                    {
                        State = VKLoginStates.Nothing
                    });
                }
                else if (response.GetAccessToken != null)
                {
                    ServiceLocator.Current.GetInstance <SettingsService>().AccessToken = response.GetAccessToken;
                    Messenger.Default.Send <LoginMessage>(new LoginMessage()
                    {
                        State = VKLoginStates.Login
                    });
                    ServiceHelper.VKLongPollService.StopLongPolling();
                }
                else
                {
                    Messenger.Default.Send <LoginMessage>(new LoginMessage()
                    {
                        State = VKLoginStates.UnknownError
                    });
                }
            });
#endif
        }
예제 #27
0
 /// <summary>
 /// Возвращает список записей со страницы
 /// </summary>
 /// <param name="callback">Метод, который будет вызван по завершении операции</param>
 /// <param name="request">Объект запроса с необходимыми параметрами</param>
 public void GetWallPosts(Action <VKResponse <List <VKBaseWallPost> > > callback,
                          GetWallRequest request)
 {
     VKHelper.GetResponse <List <VKBaseWallPost> >(request, callback);
 }
예제 #28
0
 /// <summary>
 /// Удаляет пользователя из списка друзей.
 /// </summary>
 /// <param name="callback">Метод, который будет вызван по завершении операции.
 /// Параметр является результатом запроса.</param>
 /// <param name="request">Объект запроса с необходимыми параметрами.</param>
 public void DeleteFriend(Action <VKResponse <VKDeleteFriendObject> > callback,
                          DeleteFriendRequest request)
 {
     VKHelper.GetResponse <VKDeleteFriendObject>(request, callback);
 }
예제 #29
0
 /// <summary>
 /// Выполняет указанную хранимую процедуру ВКонтакте.
 /// </summary>
 /// <typeparam name="T">Тип данных, возвращаемых методом.</typeparam>
 /// <param name="callback">Метод, который будет вызван по завершении операции.
 /// Параметр является результатом запроса.</param>
 /// <param name="request">Объект запроса с необходимыми параметрами.</param>
 public void Execute <T>(Action <VKResponse <T> > callback, VKExecuteRequest request)
 {
     VKHelper.GetResponse <T>(request, callback);
 }
예제 #30
0
 /// <summary>
 /// Позволяет пожаловаться на комментарий к видеозаписи.
 /// </summary>
 /// <param name="callback">Метод, который будет вызван по завершении операции.
 /// Параметр является результатом запроса.</param>
 /// <param name="request">Объект запроса с необходимыми параметрами.</param>
 public void ReportComment(Action <VKResponse <VKOperationIsSuccess> > callback, ReportVideoCommentRequest request)
 {
     VKHelper.GetResponse <VKOperationIsSuccess>(request, callback);
 }