Пример #1
0
        public ReadOnlyCollection <User> GetList(LikeObjectType type, long?ownerId = null, long?itemId = null, string pageUrl = null, string filter = null, bool?friendsOnly = null, bool?extended = null, long?offset = null, int?count = null)
        {
            VkErrors.ThrowIfNumberIsNegative(() => offset);
            VkErrors.ThrowIfNumberIsNegative(() => count);

            var parameters = new VkParameters
            {
                { "type", type },
                { "owner_id", ownerId },
                { "item_id", itemId },
                { "page_url", pageUrl },
                { "filter", filter },
                { "friends_only", friendsOnly },
                { "extended", extended },
                { "offset", offset },
                { "count", count }
            };

            VkResponseArray response = _vk.Call("likes.getList", parameters);

            if (extended == true)
            {
                return(response.ToReadOnlyCollectionOf <User>(x => x));
            }
            else
            {
                return(response.ToReadOnlyCollectionOf <User>(x => new User()
                {
                    Id = x
                }));
            }
        }
Пример #2
0
 /// <inheritdoc />
 public VkCollection <Comment> GetComments(GetCommentsParams getCommentsParams)
 {
     return(_vk.Call <VkCollection <Comment> >("widgets.getComments"
                                               , getCommentsParams
                                               , false
                                               , new VkCollectionJsonConverter(collectionField: "posts")));
 }
Пример #3
0
        public ReadOnlyCollection <long> GetList(GetListParams @params)
        {
            var parameters = new VkParameters
            {
                { "type", @params.Type },
                { "owner_id", @params.OwnerId },
                { "item_id", @params.ItemId },
                { "page_url", @params.PageUrl },
                { "filter", @params.Filter },
                { "friends_only", @params.FriendsOnly },
                { "offset", @params.Offset },
                { "skip_own", @params.SkipOwn }
            };

            if (@params.FriendsOnly.HasValue && @params.FriendsOnly.Value)
            {
                if (@params.Count <= 100)
                {
                    parameters.Add("count", @params.Count);
                }
            }
            else
            {
                if (@params.Count <= 1000)
                {
                    parameters.Add("count", @params.Count);
                }
            }

            VkResponseArray response = _vk.Call("likes.getList", parameters);

            return(response.ToReadOnlyCollectionOf <long>(x => x));
        }
Пример #4
0
        /// <summary>
        /// Получает список идентификаторов пользователей или сообществ, которые добавили
        /// заданный объект в свой список Мне
        /// нравится.
        /// </summary>
        /// <param name="params"> Параметры запроса. </param>
        /// <param name="skipAuthorization"> Если <c> true </c>, то пропустить авторизацию </param>
        /// <returns>
        /// Возвращает список идентификаторов пользователей или сообществ, которые добавили
        /// заданный объект в свой список Мне
        /// нравится.
        /// </returns>
        /// <remarks>
        /// Страница документации ВКонтакте http://vk.com/dev/likes.getList
        /// </remarks>
        public VkCollection <long> GetList(LikesGetListParams @params, bool skipAuthorization = false)
        {
            @params.Extended = false;

            return(_vk.Call(methodName: "likes.getList", parameters: @params, skipAuthorization: skipAuthorization)
                   .ToVkCollectionOf <long>(selector: x => x));
        }
Пример #5
0
        public ReadOnlyCollection <long> GetList(LikesGetListParams @params, bool skipAuthorization = true)
        {
            @params.Extended = false;
            VkResponseArray response = _vk.Call("likes.getList", @params, skipAuthorization);

            return(response.ToReadOnlyCollectionOf <long>(x => x));
        }
Пример #6
0
        public LinkAccessType CheckLink([NotNull] Uri url, bool skipAuthorization = true)
        {
            var parameters = new VkParameters {
                { "url", url }
            };

            return(_vk.Call("utils.checkLink", parameters, skipAuthorization));
        }
        public Status Get(long uid)
        {
            var parameters = new VkParameters {
                { "uid", uid }
            };

            return(_vk.Call("status.get", parameters));
        }
Пример #8
0
        public LinkAccessType CheckLink([NotNull] string url)
        {
            var parameters = new VkParameters {
                { "url", url }
            };

            return(_vk.Call("utils.checkLink", parameters, true));
        }
Пример #9
0
        public Status Get(long userId, long?groupId = null)
        {
            var parameters = new VkParameters {
                { "user_id", userId },
                { "group_id", groupId }
            };

            return(_vk.Call("status.get", parameters));
        }
Пример #10
0
    void JoinVKG()
    {
        var request = new VKRequest()
        {
            url = "groups.join?group_id=78616012&v=" + VkApi.VkSetts.apiVersion,
            CallBackFunction = OnGetDataCompletedVKG,
        };

        vkApi.Call(request);
    }
Пример #11
0
        public LinkAccessType CheckLink([NotNull] string url)
        {
            VkErrors.ThrowIfNullOrEmpty(() => url);

            var parameters = new VkParameters {
                { "url", url }
            };

            return(_vk.Call("utils.checkLink", parameters, true));
        }
Пример #12
0
 /// <inheritdoc />
 public ReadOnlyCollection <StorageObject> Get(IEnumerable <string> keys = null, ulong?userId = null, bool?global = null)
 {
     return(_vk.Call <ReadOnlyCollection <StorageObject> >(methodName: "storage.get"
                                                           , parameters: new VkParameters
     {
         { "keys", keys }
         , { "user_id", userId }
         , { "global", global }
     }));
 }
Пример #13
0
        /// <summary>
        /// Проверяет правильность введённого номера.
        /// </summary>
        /// <param name="phone">Номер телефона регистрируемого пользователя. строка, обязательный параметр (Строка, обязательный параметр).</param>
        /// <param name="clientId">Идентификатор Вашего приложения. целое число (Целое число).</param>
        /// <param name="clientSecret">Секретный ключ приложения, доступный в разделе редактирования приложения. строка, обязательный параметр (Строка, обязательный параметр).</param>
        /// <param name="authByPhone">Флаг, может принимать значения 1 или 0 (Флаг, может принимать значения 1 или 0).</param>
        /// <returns>
        /// В случае, если номер пользователя является правильным, будет возвращён <c>true</c>.
        /// </returns>
        /// <remarks>
        /// Страница документации ВКонтакте http://vk.com/dev/auth.checkPhone
        /// </remarks>
        public bool CheckPhone(string phone, string clientSecret, long?clientId = null, bool?authByPhone = null)
        {
            var parameters = new VkParameters {
                { "phone", phone },
                { "client_id", clientId },
                { "client_secret", clientSecret },
                { "auth_by_phone", authByPhone }
            };

            return(_vk.Call("auth.checkPhone", parameters));
        }
Пример #14
0
 /// <inheritdoc />
 public long Add(NotesAddParams notesAddParams)
 {
     return(_vk.Call(methodName: "notes.add",
                     parameters: new VkParameters
     {
         { "title", notesAddParams.Title },
         { "text", notesAddParams.Text },
         { "privacy_view", notesAddParams.PrivacyView },
         { "privacy_comment", notesAddParams.PrivacyComment }
     }));
 }
Пример #15
0
        public bool CheckPhone(string phone, long clientId, string clientSecret)
        {
            var parameters = new VkParameters
            {
                { "phone", phone },
                { "client_id", clientId },
                { "client_secret", clientSecret }
            };

            return(_vk.Call("auth.checkPhone", parameters));
        }
Пример #16
0
        public WallGetObject Get(WallGetParams @params)
        {
            if (@params.Filter != null && @params.Filter == WallFilter.Suggests && @params.OwnerId >= 0)
            {
                throw new ArgumentException("OwnerID must be negative in case filter equal to Suggests", "ownerId");
            }

            return(_vk.Call("wall.get", @params, @params.Filter != WallFilter.Suggests && @params.Filter != WallFilter.Postponed));
        }
Пример #17
0
        public VkCollection <Document> Get(int?count = null, int?offset = null, long?ownerId = null, DocFilter?filter = null)
        {
            VkErrors.ThrowIfNumberIsNegative(() => count);
            VkErrors.ThrowIfNumberIsNegative(() => offset);

            var parameters = new VkParameters
            {
                { "count", count },
                { "offset", offset },
                { "owner_id", ownerId },
                { "type", filter }
            };

            return(_vk.Call("docs.get", parameters).ToVkCollectionOf <Document>(r => r));
        }
Пример #18
0
        public ReadOnlyCollection <User> GetUsers(int?count = null, int?offset = null)
        {
            VkErrors.ThrowIfNumberIsNegative(() => count);
            VkErrors.ThrowIfNumberIsNegative(() => offset);

            var parameters = new VkParameters
            {
                { "count", count },
                { "offset", offset }
            };

            VkResponseArray response = _vk.Call("fave.getUsers", parameters);

            return(response.ToReadOnlyCollectionOf <User>(x => x));
        }
Пример #19
0
        public async Task <IActionResult> Result([FromQuery] string link, [FromServices] AnalyzingService analyzer)
        {
            string screenName = link.Replace(@"https://vk.com/", string.Empty);
            var    users      = await VkApi.Users.GetAsync(new[] { screenName }, ProfileFields.Photo100);

            var user     = users[0];
            var response = VkApi.Call(
                "execute.getUserInfo",
                new VkNet.Utils.VkParameters(new Dictionary <string, string>
            {
                ["id"] = user.Id.ToString()
            }));

            var fetchedUser = JsonConvert.DeserializeObject <FetchedResponse>(response.RawJson).Response;

            fetchedUser.Wall.Count = 300;
            fetchedUser.Wall.Items = fetchedUser.Wall.Items.Take(300).ToArray();

            var result = analyzer.Analyze(fetchedUser);

            ViewData["Name"]        = $"{user.FirstName} {user.LastName}";
            ViewData["FacultyName"] = result.First().Key.ToString();
            ViewData["FacultyLink"] = "https://utmn.ru";
            ViewData["AvatarUrl"]   = user.Photo100;
            return(View("Views/Result.cshtml", result));
        }
Пример #20
0
        public void Call_NotMoreThen3CallsPerSecond()
        {
            int invocationCount = 0;
            var browser = new Mock<IBrowser>();
            browser.Setup(m => m.GetJson(It.IsAny<string>()))
                   .Returns(@"{ ""response"": 2 }")
                   .Callback(() => invocationCount++);

            var api = new VkApi {Browser = browser.Object};

            var start = DateTimeOffset.Now;
            while (true)
            {
                api.Call("someMethod", VkParameters.Empty, true);

                int total = (int)(DateTimeOffset.Now - start).TotalMilliseconds;
                if (total > 999)
                    break;

            }

            // Не больше 4 раз, т.к. 4-ый раз вызывается через 1002 мс после первого вызова, а total выходит через 1040 мс
            // переписать тест, когда придумаю более подходящий метод проверки
            browser.Verify(m => m.GetJson(It.IsAny<string>()), Times.AtMost(4));
        }
Пример #21
0
 /// <inheritdoc />
 public IEnumerable <NotificationGetResult> Get(ulong?count                    = null
                                                , string startFrom             = null
                                                , IEnumerable <string> filters = null
                                                , long?startTime               = null
                                                , long?endTime                 = null)
 {
     return(_vk.Call <IEnumerable <NotificationGetResult> >(methodName: "notifications.get"
                                                            , parameters: new VkParameters
     {
         { "count", count }
         , { "start_from", startFrom }
         , { "filters", filters }
         , { "start_time", startTime }
         , { "end_time", endTime }
     }));
 }
Пример #22
0
        private int FillOutTextBox(string[] ids)
        {
            try
            {
                //api.Groups.GetById(...) не создает поля Cover
                //Поэтому нужно это делать вручную.
                List <Group> res = new List <Group>();
                Dictionary <string, string> d = new Dictionary <string, string>();

                d.Add("group_ids", String.Join(",", ids));
                d.Add("fields", "cover");
                VkNet.Utils.VkParameters    param = new VkNet.Utils.VkParameters(d);
                VkNet.Utils.VkResponseArray v     = api.Call("groups.getById", param);

                foreach (var g in v)
                {
                    res.Add(VkNet.Model.Group.FromJson(g));
                }

                foreach (var g in res)
                {
                    //if (g.Photo50.LocalPath == "/images/community_50.png")
                    if (check.CheckGroup(g))
                    {
                        OutputTextBox.Text += g.Id.ToString() + "\r\n";
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show("Неверный сервисный ключ доступа.", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(0);
            }
            return(1);
        }
Пример #23
0
        public void Call_NotMoreThen3CallsPerSecond()
        {
            int invocationCount = 0;
            var browser         = new Mock <IBrowser>();

            browser.Setup(m => m.GetJson(It.IsAny <string>()))
            .Returns(@"{ ""response"": 2 }")
            .Callback(() => invocationCount++);

            var api = new VkApi {
                Browser = browser.Object
            };

            var start = DateTimeOffset.Now;

            while (true)
            {
                api.Call("someMethod", VkParameters.Empty, true);

                int total = (int)(DateTimeOffset.Now - start).TotalMilliseconds;
                if (total > 999)
                {
                    break;
                }
            }

            // Не больше 4 раз, т.к. 4-ый раз вызывается через 1002 мс после первого вызова, а total выходит через 1040 мс
            // переписать тест, когда придумаю более подходящий метод проверки
            browser.Verify(m => m.GetJson(It.IsAny <string>()), Times.AtMost(4));
        }
Пример #24
0
        public bool ClearCache(Uri url)
        {
            var parameters = new VkParameters
            {
                { "url", url }
            };

            return _vk.Call("pages.clearCache", parameters);
        }
Пример #25
0
        public ReadOnlyCollection <Country> GetCountries(bool needAll = true, string codes = "", int?count = null, int?offset = null)
        {
            VkErrors.ThrowIfNumberIsNegative(() => offset);
            VkErrors.ThrowIfNumberIsNegative(() => count);

            var parameters = new VkParameters {
                { "code", codes }, { "offset", offset }, { "count", count }, { "need_all", needAll }
            };

            VkResponseArray response = _vk.Call("database.getCountries", parameters, true);

            return(response.ToReadOnlyCollectionOf <Country>(x => x));
        }
Пример #26
0
        public ReadOnlyCollection <User> Search(out int itemsCount, UserSearchParams @params)
        {
            if (string.IsNullOrWhiteSpace(@params.Query))
            {
                throw new ArgumentException("Query can not be null or empty.");
            }

            var response = _vk.Call("users.search", @params);

            itemsCount = response["count"];

            return(response["items"].ToReadOnlyCollectionOf <User>(r => r));
        }
Пример #27
0
        /// <summary>
        /// Возвращает статистику сообщества или приложения.
        /// </summary>
        /// <param name="groupId">Идентификатор сообщества.</param>
        /// <param name="appId">Идентификатор приложения.</param>
        /// <param name="dateFrom">Начальная дата выводимой статистики в формате YYYY-MM-DD.</param>
        /// <param name="dateTo">Конечная дата выводимой статистики в формате YYYY-MM-DD.</param>
        /// <returns>
        /// Возвращает результат выполнения метода.
        /// </returns>
        /// <remarks>
        /// Страница документации ВКонтакте https://vk.com/dev/stats.get
        /// </remarks>
        private ReadOnlyCollection <StatsPeriod> Get(DateTime dateFrom, DateTime?dateTo = null, long?groupId = null, long?appId = null)
        {
            var parameters = new VkParameters
            {
                { "group_id", groupId },
                { "app_id", appId },
                { "date_from", dateFrom.ToString("yyyy-MM-dd") }
            };

            if (dateTo != null)
            {
                parameters.Add("date_to", dateTo.Value.ToString("yyyy-MM-dd"));
            }
            var result = _vk.Call("stats.get", parameters);

            return(result.ToReadOnlyCollectionOf <StatsPeriod>(x => x));
        }
Пример #28
0
        List <FetchedUser> FetchRemote(string vkLogin, string vkPassword)
        {
            var userIds = new List <long>();

            foreach (var year in Years)
            {
                foreach (int facultyId in FacultiesExtensions.EnumerateReal())
                {
                    var response = vkApi.Users.Search(new UserSearchParams
                    {
                        University        = UniversityId,
                        UniversityFaculty = facultyId,
                        UniversityYear    = year,
                        Count             = 1000
                    });
                    userIds.AddRange(response.Select(u => u.Id));
                }
            }

            var results = new List <FetchedUser>();
            int i       = 0;

            foreach (var userId in userIds)
            {
                // any f****n vk.net error
                try
                {
                    if (UsersLimit != null && i >= UsersLimit)
                    {
                        break;
                    }
                    var infoResponse = vkApi.Call(
                        "execute.getUserInfo",
                        new VkNet.Utils.VkParameters(new Dictionary <string, string>
                    {
                        ["id"] = userId.ToString()
                    }));
                    i++;

                    // try deserialize if wall is not hidden
                    try
                    {
                        var fetchedResponse = JsonConvert.DeserializeObject <FetchedResponse>(infoResponse.RawJson);
                        results.Add(fetchedResponse.Response);
                    }
                    catch (JsonSerializationException)
                    {
                        continue;
                    }
                }
                catch (Exception ex)
                {
                    logger.LogWarning($"User with ID {userId} is skipped during error {ex.Message}");
                    continue;
                }
            }
            return(results);
        }
Пример #29
0
    public void Get3FriendsDataFromVk(int attempt)
    {
        var r = "friends.get?user_id=" + VkApi.currentToken.user_id + "&count=3&fields=photo_200";

        vkapi.Call(r, OnGet5FriendsCompleted, new object[] { attempt });
        //vkapi.call принимает 3 параметра строку запроса, функцию обработчика запроса,
        //и массив обеъктов(можно передать любые объекты, их пожно использовать в обработчике
        //например, можно рализовать повторные запросы при неудаче как здесь.
    }
Пример #30
0
        public IEnumerable <App> GetCatalog(out int totalCount, AppGetCatalogParams @params)
        {
            var response = _vk.Call("apps.getCatalog", @params, [email protected]);

            totalCount = response["count"];

            return(response["items"].ToReadOnlyCollectionOf <App>(x => x));
        }
    void onVKLogin()
    {
        VKRequest r = new VKRequest
        {
            url = "users.get?",
            CallBackFunction = OnGetUserInfo
        };

        _vkapi.Call(r);
    }
Пример #32
0
        public void Call_ThrowsCaptchaNeededException()
        {
            const string json =
                @"{
                    'error': {
                      'error_code': 14,
                      'error_msg': 'Captcha needed',
                      'request_params': [
                        {
                          'key': 'oauth',
                          'value': '1'
                        },
                        {
                          'key': 'method',
                          'value': 'messages.send'
                        },
                        {
                          'key': 'uid',
                          'value': '242508553'
                        },
                        {
                          'key': 'message',
                          'value': 'hello10'
                        },
                        {
                          'key': 'type',
                          'value': '0'
                        },
                        {
                          'key': 'access_token',
                          'value': '1fe7889c3395722934b1'
                        }
                      ],
                      'captcha_sid': '548747100691',
                      'captcha_img': 'http://api.vk.com/captcha.php?sid=548747100284&s=1'
                    }
                  }";

            var browser = Mock.Of<IBrowser>(m => m.GetJson(It.IsAny<string>()) == json);
            var api = new VkApi {Browser = browser};

            var ex = This.Action(() => api.Call("messages.send", VkParameters.Empty, true)).Throws<CaptchaNeededException>();

            ex.Sid.ShouldEqual(548747100691);
            ex.Img.ShouldEqual(new Uri("http://api.vk.com/captcha.php?sid=548747100284&s=1"));
        }