Example #1
0
        public async Task <VkDocumentAttachment> Save(string file, string title = null, string tags = null)
        {
            var parameters = new Dictionary <string, string>();

            parameters.Add("file", file);

            if (!string.IsNullOrEmpty(title))
            {
                parameters.Add("title", title);
            }

            if (!string.IsNullOrEmpty(tags))
            {
                parameters.Add("tags", tags);
            }

            _vk.SignMethod(parameters);

            var response = await VkRequest.GetAsync(VkConst.MethodBase + "docs.save", parameters);

            if (response["response"] != null)
            {
                return(VkDocumentAttachment.FromJson(response["response"].First));
            }

            return(null);
        }
Example #2
0
        /// <summary>
        /// Add audio to current user or society.
        /// See also <see cref="http://vk.com/dev/audio.add"/>
        /// </summary>
        /// <param name="audioId">Audio id</param>
        /// <param name="ownerId">Owner id</param>
        /// <param name="groupId">Target society</param>
        /// <param name="captchaSid">Captcha sid</param>
        /// <param name="captchaKey">Captcha key</param>
        /// <returns>Id of new audio</returns>
        public async Task <long> Add(long audioId, long ownerId, long groupId = 0, string captchaSid = null, string captchaKey = null)
        {
            var parameters = new Dictionary <string, string>();

            parameters["audio_id"] = audioId.ToString();

            parameters["owner_id"] = ownerId.ToString();

            if (groupId != 0)
            {
                parameters.Add("group_id", groupId.ToString());
            }

            if (!string.IsNullOrEmpty(captchaSid))
            {
                parameters.Add("captcha_sid", captchaSid);
            }

            if (!string.IsNullOrEmpty(captchaKey))
            {
                parameters.Add("captcha_key", captchaKey);
            }

            _vkontakte.SignMethod(parameters);

            var response = await VkRequest.GetAsync(VkConst.MethodBase + "audio.add", parameters);

            if (response["response"] != null)
            {
                return(response["response"].Value <long>());
            }

            return(0);
        }
Example #3
0
        public async Task <bool> MarkAsRead(IEnumerable <long> messageIds, string peerId = null, long startMessageId = -1)
        {
            var parametres = new Dictionary <string, string>();

            if (messageIds != null)
            {
                parametres.Add("message_ids", string.Join(",", messageIds));
            }

            if (peerId != null)
            {
                parametres.Add("peer_id", peerId);
            }

            if (startMessageId != -1)
            {
                parametres.Add("start_message_id", startMessageId.ToString());
            }

            _vkontakte.SignMethod(parametres);

            var response = await VkRequest.GetAsync(VkConst.MethodBase + "messages.markAsRead", parametres);

            if (response["response"] != null && response["response"].Value <long>() == 1)
            {
                return(true);
            }

            return(false);
        }
Example #4
0
        public async Task <VkPhoto> SaveWallPhoto(string server, string photo, string hash, long userId = 0, long groupId = 0)
        {
            var parameters = new Dictionary <string, string>();

            parameters.Add("server", server);
            parameters.Add("photo", photo);
            parameters.Add("hash", hash);

            if (userId != 0)
            {
                parameters.Add("user_id", userId.ToString());
            }

            if (groupId != 0)
            {
                parameters.Add("group_id", groupId.ToString());
            }

            parameters.Add("access_token", _vkontakte.AccessToken.Token);

            var response = await VkRequest.GetAsync(VkConst.MethodBase + "photos.saveWallPhoto", parameters);

            if (response["response"] != null)
            {
                return(VkPhoto.FromJson(response["response"].First));
            }

            return(null);
        }
Example #5
0
        public async Task <bool> SetActivity(string userId = null, string type = "typing", string peerId = null)
        {
            var parametres = new Dictionary <string, string>();

            if (userId != null)
            {
                parametres.Add("user_id", userId);
            }

            if (peerId != null)
            {
                parametres.Add("peer_id", peerId);
            }

            if (type != null)
            {
                parametres.Add("type", type);
            }

            _vkontakte.SignMethod(parametres);

            var response = await VkRequest.GetAsync(VkConst.MethodBase + "messages.setActivity", parametres);

            if (response["response"]?.Value <long>() == 1)
            {
                return(true);
            }

            return(false);
        }
Example #6
0
        public async Task <VkItemsResponse <VkGroup> > Search(string query, VkGroupSearchType sort = VkGroupSearchType.ByUsers, int count = 0, int offset = 0)
        {
            var parameters = new Dictionary <string, string>();

            if (!string.IsNullOrEmpty(query))
            {
                parameters.Add("q", query);
            }

            parameters.Add("sort", ((int)sort).ToString());

            if (count > 0)
            {
                parameters.Add("count", count.ToString());
            }

            if (offset > 0)
            {
                parameters.Add("offset", offset.ToString());
            }

            _vkontakte.SignMethod(parameters);

            var response = await VkRequest.GetAsync(VkConst.MethodBase + "groups.search", parameters);

            if (response.SelectToken("response.items") != null)
            {
                return(new VkItemsResponse <VkGroup>((from g in response["response"]["items"] where g.HasValues select VkGroup.FromJson(g)).ToList(), response["response"]["count"].Value <int>()));
            }

            return(VkItemsResponse <VkGroup> .Empty);
        }
Example #7
0
        public async Task <List <VkProfile> > SearchDialogs(string q, int count = 0, string fields = null)
        {
            var parameters = new Dictionary <string, string>();

            parameters.Add("q", q);

            if (count > 0)
            {
                parameters.Add("limit", count.ToString());
            }

            if (!string.IsNullOrEmpty(fields))
            {
                parameters.Add("fields", fields);
            }

            _vkontakte.SignMethod(parameters);

            var response = await VkRequest.GetAsync(VkConst.MethodBase + "messages.searchDialogs", parameters);

            if (response["response"] != null)
            {
                return(new List <VkProfile>(response["response"].Select(VkProfile.FromJson)));
            }

            return(new List <VkProfile>());
        }
Example #8
0
        private static bool check_Nick_free_RU(string nick, string server)
        {
            server = server.Trim().Replace(' ', '-').Replace('й', 'и');
            nick   = nick.Trim();
            var    URL_nick   = HttpUtility.UrlEncode(nick);
            var    URL_server = HttpUtility.UrlEncode(server);
            string link       = $@"http://eu.battle.net/wow/ru/character/{URL_server}/{URL_nick}/simple";
            var    doc        = VkRequest.Request(link).GetHtmlDocument();

            if (doc.Text.Contains("Профиль этого персонажа невозможно отобразить"))
            {
                Log(nick + " свободен!");
                return(true);
            }
            else if (string.IsNullOrEmpty(doc.Text))
            {
                Log("Нет доступа к сайту? или еще что-то");
                return(false);
            }
            else
            {
                Log(nick + " занят.");
                return(false);
            }
        }
Example #9
0
        public async Task <List <long> > SetBroadcast(long audioId, long ownerId, IList <long> targetIds = null)
        {
            var parameters = new Dictionary <string, string>();

            if (audioId != 0 && ownerId != 0)
            {
                parameters.Add("audio", $"{ownerId}_{audioId}");
            }

            if (targetIds != null)
            {
                parameters.Add("target_ids", string.Join(",", targetIds));
            }

            _vkontakte.SignMethod(parameters);

            var response = await VkRequest.GetAsync(VkConst.MethodBase + "audio.setBroadcast", parameters);

            if (response["response"]?.HasValues == true)
            {
                return(response["response"].Values <long>().ToList <long>());
            }

            return(null);
        }
Example #10
0
        public async Task <VkItemsResponse <VkProfile> > Get(IEnumerable <string> userIds, string fields = null, string nameCase = null)
        {
            var parameters = new Dictionary <string, string>();

            if (userIds != null)
            {
                parameters.Add("user_ids", string.Join(",", userIds));
            }

            if (!string.IsNullOrWhiteSpace(fields))
            {
                parameters.Add("fields", fields);
            }

            if (!string.IsNullOrWhiteSpace(nameCase))
            {
                parameters.Add("name_case", nameCase);
            }

            _vkontakte.SignMethod(parameters);

            var response = await VkRequest.GetAsync(VkConst.MethodBase + "users.get", parameters);

            if (response["response"] != null)
            {
                return(new VkItemsResponse <VkProfile>((from u in response["response"] select VkProfile.FromJson(u)).ToList()));
            }

            return(VkItemsResponse <VkProfile> .Empty);
        }
Example #11
0
        public async Task <VkItemsResponse <VkAudio> > GetPopular(bool onlyEng = false, int count = 0, int offset = 0, int genreId = 0)
        {
            var parameters = new Dictionary <string, string>();

            if (onlyEng)
            {
                parameters.Add("only_eng", "1");
            }

            if (genreId != 0)
            {
                parameters.Add("genre_id", genreId.ToString(CultureInfo.InvariantCulture));
            }

            if (count > 0)
            {
                parameters.Add("count", count.ToString(CultureInfo.InvariantCulture));
            }

            if (offset > 0)
            {
                parameters.Add("offset", offset.ToString(CultureInfo.InvariantCulture));
            }

            _vkontakte.SignMethod(parameters);

            var response = await VkRequest.GetAsync(VkConst.MethodBase + "audio.getPopular", parameters);

            if (response["response"]?.HasValues == true)
            {
                return(new VkItemsResponse <VkAudio>((from a in response["response"] select VkAudio.FromJson(a)).ToList()));
            }

            return(VkItemsResponse <VkAudio> .Empty);
        }
Example #12
0
        public async Task <bool> Reorder(long audioId, long after, long before, long ownerId = 0)
        {
            var parameters = new Dictionary <string, string>();

            parameters.Add("audio_id", audioId.ToString());

            if (before != 0)
            {
                parameters.Add("before", before.ToString());
            }

            if (after != 0)
            {
                parameters.Add("after", after.ToString());
            }

            if (ownerId != 0)
            {
                parameters.Add("owner_id", ownerId.ToString());
            }

            _vkontakte.SignMethod(parameters);

            var response = await VkRequest.GetAsync(VkConst.MethodBase + "audio.reorder", parameters);

            return(response["response"]?.Value <int>() == 1);
        }
Example #13
0
        public async Task <VkItemsResponse <VkPlaylist> > GetPlaylists(long ownerId, int count = 0, int offset = 0)
        {
            var parameters = new Dictionary <string, string>();

            parameters["owner_id"] = ownerId.ToString(CultureInfo.InvariantCulture);

            if (count > 0)
            {
                parameters["count"] = count.ToString(CultureInfo.InvariantCulture);
            }

            if (offset > 0)
            {
                parameters["offset"] = offset.ToString(CultureInfo.InvariantCulture);
            }

            _vkontakte.SignMethod(parameters);

            var response = await VkRequest.GetAsync(VkConst.MethodBase + "audio.getPlaylists", parameters);

            if (response.SelectToken("response.items") != null)
            {
                return(new VkItemsResponse <VkPlaylist>(response["response"]["items"].Select(VkPlaylist.FromJson).ToList(), (int)response["response"]["count"]));
            }

            return(VkItemsResponse <VkPlaylist> .Empty);
        }
Example #14
0
        public async Task <VkItemsResponse <VkMessage> > GetById(IEnumerable <long> messageIds, int previewLength = 0)
        {
            var parametres = new Dictionary <string, string>();

            if (messageIds != null)
            {
                parametres.Add("message_ids", string.Join(",", messageIds));
            }

            if (previewLength > 0)
            {
                parametres.Add("preview_length", previewLength.ToString());
            }

            _vkontakte.SignMethod(parametres);

            var response = await VkRequest.GetAsync(VkConst.MethodBase + "messages.getById", parametres);

            if (response.SelectToken("response.items") != null)
            {
                return(new VkItemsResponse <VkMessage>(response["response"]["items"].Select(i => VkMessage.FromJson(i, _vkontakte.ApiVersion)).ToList(),
                                                       (int)response["response"]["count"]));
            }

            return(VkItemsResponse <VkMessage> .Empty);
        }
Example #15
0
        public async Task <VkNewsResponse> Get(string sourceIds = null, string filters = null, int count = 0, string startFrom = null)
        {
            var parameters = new Dictionary <string, string>();

            if (!string.IsNullOrEmpty(sourceIds))
            {
                parameters.Add("source_ids", sourceIds);
            }

            if (!string.IsNullOrEmpty(filters))
            {
                parameters.Add("filters", filters);
            }

            if (count > 0)
            {
                parameters.Add("count", count.ToString());
            }

            if (!string.IsNullOrEmpty(startFrom))
            {
                parameters.Add("start_from", startFrom);
            }

            _vkontakte.SignMethod(parameters);

            var response = await VkRequest.GetAsync(VkConst.MethodBase + "newsfeed.get", parameters);

            if (response.SelectToken("response.items") != null)
            {
                var result = new VkNewsResponse((from n in response["response"]["items"] select VkNewsEntry.FromJson(n)).ToList());

                if (response["response"]["profiles"] != null)
                {
                    var users = (from n in response["response"]["profiles"] select VkProfile.FromJson(n)).ToList();
                    foreach (var entry in result.Items)
                    {
                        entry.Author = users.FirstOrDefault(u => u.Id == entry.SourceId);
                    }
                }

                if (response["response"]["groups"] != null)
                {
                    var groups = (from n in response["response"]["groups"] select VkGroup.FromJson(n)).ToList();
                    foreach (var entry in result.Items.Where(e => e.Author == null))
                    {
                        entry.Author = groups.FirstOrDefault(g => g.Id == Math.Abs(entry.SourceId));
                    }
                }

                if (response["response"]["next_from"] != null)
                {
                    result.NextFrom = response["response"]["next_from"].Value <string>();
                }

                return(result);
            }

            return(null);
        }
Example #16
0
        /// <summary>
        /// <para>Direct auth with login and password.</para>
        /// <para>See also: <seealso cref="http://vk.com/pages?oid=-1&p=Прямая_авторизация"/></para>
        /// </summary>
        /// <param name="login">Login</param>
        /// <param name="password">Password</param>
        /// <param name="scopeSettings">Scope settings</param>
        /// <param name="captchaSid">Captcha sid</param>
        /// <param name="captchaKey">Captcha key</param>
        /// <returns><see cref="VkAccessToken"/></returns>
        public async Task <VkAccessToken> Login(string login, string password, VkScopeSettings scopeSettings = VkScopeSettings.CanAccessFriends,
                                                string captchaSid = null, string captchaKey = null)
        {
            var parameters = new Dictionary <string, string>
            {
                { "username", login },
                { "password", password },
                { "grant_type", "password" },
                { "scope", ((int)scopeSettings).ToString(CultureInfo.InvariantCulture) }
            };

            if (!string.IsNullOrEmpty(captchaSid) && !string.IsNullOrEmpty(captchaKey))
            {
                parameters.Add("captcha_sid", captchaSid);
                parameters.Add("captcha_key", captchaKey);
            }

            parameters.Add("client_id", _vkontakte.AppId);
            parameters.Add("client_secret", _vkontakte.ClientSecret);

            var response = await VkRequest.GetAsync(VkConst.DirectAuthUrl, parameters);

            var token = new VkAccessToken();

            token.Token            = response["access_token"].Value <string>();
            token.UserId           = response["user_id"].Value <long>();
            token.ExpiresIn        = response["expires_in"].Value <long>() == 0 ? DateTime.MaxValue : DateTimeExtensions.UnixTimeStampToDateTime(response["expires_in"].Value <long>());
            _vkontakte.AccessToken = token;
            return(token);
        }
Example #17
0
        public async Task <List <VkProfile> > SearchHints(string q, int count = 9, string filters = null, bool searchGlobal = false, string fields = null)
        {
            var parameters = new Dictionary <string, string>();

            parameters.Add("q", q);

            if (count != 0)
            {
                parameters.Add("limit", count.ToString());
            }

            if (!string.IsNullOrEmpty(filters))
            {
                parameters.Add("filters", filters);
            }

            parameters.Add("search_global", searchGlobal ? "1" : "0");

            if (!string.IsNullOrWhiteSpace(fields))
            {
                parameters.Add("fields", fields);
            }

            _vkontakte.SignMethod(parameters);

            var response = await VkRequest.GetAsync(VkConst.MethodBase + "execute.searchHints", parameters);

            if (response["response"] != null)
            {
                return(new List <VkProfile>(from u in response["response"] select VkProfile.FromJson(u)));
            }

            return(new List <VkProfile>());
        }
Example #18
0
        public async Task <VkVideoSaveResponse> Save(string name = null, string description = null, bool isPrivate = false)
        {
            var parameters = new Dictionary <string, string>();

            if (!string.IsNullOrEmpty(name))
            {
                parameters.Add("name", name);
            }

            if (!string.IsNullOrEmpty(description))
            {
                parameters.Add("description", description);
            }

            if (isPrivate)
            {
                parameters.Add("is_private", "1");
            }

            _vkontakte.SignMethod(parameters);

            var response = await VkRequest.GetAsync(VkConst.MethodBase + "video.save", parameters);

            if (response["response"] != null)
            {
                return(VkVideoSaveResponse.FromJson(response["response"]));
            }

            return(null);
        }
Example #19
0
        public async Task <VkItemsResponse <VkWallEntry> > Get(long ownerId, string filter, int count = 0, int offset = 0)
        {
            var parameters = new Dictionary <string, string>();

            if (ownerId != 0)
            {
                parameters.Add("owner_id", ownerId.ToString());
            }

            if (!string.IsNullOrEmpty(filter))
            {
                parameters.Add("filter", filter);
            }

            if (count > 0)
            {
                parameters.Add("count", count.ToString());
            }

            if (offset > 0)
            {
                parameters.Add("offset", offset.ToString());
            }

            parameters.Add("extended", "1");

            _vkontakte.SignMethod(parameters);

            var response = await VkRequest.GetAsync(VkConst.MethodBase + "wall.get", parameters);

            if (response.SelectToken("response.items") != null)
            {
                var result = new VkItemsResponse <VkWallEntry>();
                result.Items      = (from p in response["response"]["items"] where p.HasValues select VkWallEntry.FromJson(p)).ToList();
                result.TotalCount = response["response"]["count"].Value <int>();

                if (response["response"]["profiles"] != null)
                {
                    var users = (from n in response["response"]["profiles"] select VkProfile.FromJson(n)).ToList();
                    foreach (var entry in result.Items)
                    {
                        entry.Author = users.FirstOrDefault(u => u.Id == entry.SourceId);
                    }
                }

                if (response["response"]["groups"] != null)
                {
                    var groups = (from n in response["response"]["groups"] select VkGroup.FromJson(n)).ToList();
                    foreach (var entry in result.Items.Where(e => e.Author == null))
                    {
                        entry.Author = groups.FirstOrDefault(g => g.Id == Math.Abs(entry.SourceId));
                    }
                }

                return(result);
            }

            return(null);
        }
Example #20
0
        public async Task <VkItemsResponse <VkProfile> > Get(long userId, string fields, string nameCase, int count, int offset, FriendsOrder order = FriendsOrder.ByName)
        {
            var parameters = new Dictionary <string, string>();

            if (userId > 0)
            {
                parameters.Add("user_id", userId.ToString());
            }

            if (!string.IsNullOrWhiteSpace(fields))
            {
                parameters.Add("fields", fields);
            }

            if (!string.IsNullOrWhiteSpace(nameCase))
            {
                parameters.Add("name_case", nameCase);
            }

            if (count > 0)
            {
                parameters.Add("count", count.ToString());
            }

            if (offset > 0)
            {
                parameters.Add("offset", offset.ToString());
            }

            switch (order)
            {
            case FriendsOrder.ByName:
                parameters.Add("order", "name");
                break;

            case FriendsOrder.ByRating:
                parameters.Add("order", "hints");
                break;

            case FriendsOrder.Random:
                parameters.Add("order", "random");
                break;
            }


            _vkontakte.SignMethod(parameters);

            var response = await VkRequest.GetAsync(VkConst.MethodBase + "friends.get", parameters);

            if (response.SelectToken("response.items") != null)
            {
                return(new VkItemsResponse <VkProfile>(response["response"]["items"].Select(VkProfile.FromJson).ToList(), (int)response["response"]["count"]));
            }

            return(VkItemsResponse <VkProfile> .Empty);
        }
Example #21
0
        public async Task <string> GetUploadServer()
        {
            var parameters = new Dictionary <string, string>();

            _vkontakte.SignMethod(parameters);

            var response = await VkRequest.GetAsync(VkConst.MethodBase + "audio.getUploadServer", parameters);

            return(response["response"]["upload_url"]?.Value <string>());
        }
Example #22
0
        /// <summary>
        /// Удаляет аудиозапись со страницы пользователя
        /// </summary>
        /// <param name="audioId"></param>
        /// <param name="ownerId"></param>
        public void Delete(int audioId, int ownerId)
        {
            var parameters = new Dictionary <string, object>
            {
                { "audio_id=", audioId },
                { "owner_id=", ownerId }
            };

            VkRequest.GetData("audio.delete", parameters);
        }
Example #23
0
        public async Task<bool> SetOffline()
        {
            var parametres = new Dictionary<string, string>();

            _vkontakte.SignMethod(parametres);

            var response = await VkRequest.GetAsync(VkConst.MethodBase + "account.setOffline", parametres);

            return response["response"]?.Value<int>() == 1;
        }
Example #24
0
        //this method used by vk to mark access token as "true" (obtained from official app)
        public async Task GetBaseData(Dictionary <string, string> parameters)
        {
            if (_vkontakte.AccessToken == null || string.IsNullOrEmpty(_vkontakte.AccessToken.Token) || _vkontakte.AccessToken.HasExpired)
            {
                throw new Exception("Access token is not valid.");
            }

            _vkontakte.SignMethod(parameters);

            var response = await VkRequest.GetAsync(VkConst.MethodBase + "execute.getBaseData", parameters);
        }
Example #25
0
        public async Task <VkItemsResponse <VkVideo> > Get(IList <string> videos, string ownerId = null, string albumId = null, int count = 0, int offset = 0, bool extended = false)
        {
            if (count > 200)
            {
                throw new ArgumentException("Maximum count is 200.");
            }

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

            if (videos != null)
            {
                parameters.Add("videos", string.Join(",", videos));
            }

            if (!string.IsNullOrEmpty(ownerId))
            {
                parameters.Add("owner_id", ownerId);
            }

            if (!string.IsNullOrEmpty(albumId))
            {
                parameters.Add("album_id", albumId);
            }

            if (count > 0)
            {
                parameters.Add("count", count.ToString(CultureInfo.InvariantCulture));
            }
            else
            {
                parameters.Add("count", MAX_VIDEO_COUNT.ToString(CultureInfo.InvariantCulture));
            }

            if (offset > 0)
            {
                parameters.Add("offset", offset.ToString(CultureInfo.InvariantCulture));
            }

            if (extended)
            {
                parameters.Add("extended", "1");
            }

            _vkontakte.SignMethod(parameters);

            var response = await VkRequest.GetAsync(VkConst.MethodBase + "video.get", parameters);

            if (response.SelectToken("response.items") != null)
            {
                return(new VkItemsResponse <VkVideo>(response["response"]["items"].Select(VkVideo.FromJson).ToList(), (int)response["response"]["count"]));
            }

            return(null);
        }
Example #26
0
        public async Task <IEnumerable <VkVideo> > Search(string query, int count = 0, int offset = 0, bool hdOnly = false, VkAudioSortType sort = VkAudioSortType.DateAdded, bool adult = false)
        {
            if (count > 200)
            {
                throw new ArgumentException("Maximum count is 200.");
            }

            if (query == null)
            {
                throw new ArgumentException("Query must not be null.");
            }

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

            parameters.Add("q", query);

            if (hdOnly)
            {
                parameters.Add("hd", "1");
            }

            parameters.Add("sort", ((int)sort).ToString(CultureInfo.InvariantCulture));

            if (adult)
            {
                parameters.Add("adult", "1");
            }

            if (count > 0)
            {
                parameters.Add("count", count.ToString(CultureInfo.InvariantCulture));
            }
            else
            {
                parameters.Add("count", MAX_VIDEO_COUNT.ToString(CultureInfo.InvariantCulture));
            }

            if (offset > 0)
            {
                parameters.Add("offset", offset.ToString(CultureInfo.InvariantCulture));
            }

            parameters.Add("access_token", _vkontakte.AccessToken.Token);

            var response = await VkRequest.GetAsync(VkConst.MethodBase + "video.search", parameters);

            if (response["response"]?.HasValues == true)
            {
                return(from v in response["response"] select VkVideo.FromJson(v));
            }

            return(null);
        }
Example #27
0
        public async Task <string> Get(string key)
        {
            var parameters = new Dictionary <string, string>();

            parameters.Add("key", key);

            parameters.Add("access_token", _vkontakte.AccessToken.Token);

            var response = await VkRequest.GetAsync(VkConst.MethodBase + "storage.get", parameters);

            return(response["response"]?.Value <string>());
        }
Example #28
0
        public async Task <bool> Delete(List <long> messageIds)
        {
            var parametres = new Dictionary <string, string>();

            parametres.Add("message_ids", string.Join(",", messageIds));

            _vkontakte.SignMethod(parametres);

            var response = await VkRequest.GetAsync(VkConst.MethodBase + "messages.delete", parametres);

            return(response["response"].Value <bool>());
        }
Example #29
0
        /// <summary>
        /// <para>Direct auth with login and password.</para>
        /// <para>See also: <seealso cref="http://vk.com/pages?oid=-1&p=Прямая_авторизация"/></para>
        /// </summary>
        /// <param name="login">Login</param>
        /// <param name="password">Password</param>
        /// <param name="scopeSettings">Scope settings</param>
        /// <param name="captchaSid">Captcha sid</param>
        /// <param name="captchaKey">Captcha key</param>
        /// <returns><see cref="AccessToken"/></returns>
        public async Task<AccessToken> Login(string login, string password, VkScopeSettings scopeSettings = VkScopeSettings.CanAccessFriends, 
            string captchaSid = null, string captchaKey = null)
        {
            if (string.IsNullOrEmpty(_vkontakte.AppId))
                throw new NullReferenceException("App id must be specified.");

            if (string.IsNullOrEmpty(_vkontakte.ClientSecret))
                throw new NullReferenceException("Client secret must be specified.");

            var parameters = new Dictionary<string, string>
            {
                {"username", login},
                {"password", password},
                {"grant_type", "password"},
                {"scope", ((int) scopeSettings).ToString(CultureInfo.InvariantCulture)}
            };

            if (!string.IsNullOrEmpty(captchaSid) && !string.IsNullOrEmpty(captchaKey))
            {
                parameters.Add("captcha_sid", captchaSid);
                parameters.Add("captcha_key", captchaKey);
            }

            parameters.Add("client_id", _vkontakte.AppId);
            parameters.Add("client_secret", _vkontakte.ClientSecret);

            var request = new VkRequest(new Uri(VkConst.DirectAuthUrl), parameters);
            var response = await request.Execute();

            if (response["error"] != null)
            {
                switch (response["error"].Value<string>())
                {
                    case "need_captcha":
                        throw new VkCaptchaNeededException(response["captcha_sid"].Value<string>(), response["captcha_img"].Value<string>());

                    case "invalid_client":
                        throw new VkInvalidClientException();

                    case "need_validation":
                        throw new VkNeedValidationException() { RedirectUri = new Uri(response["redirect_uri"].Value<string>()) };
                }

                return null;
            }

            var token = new AccessToken();
            token.Token = response["access_token"].Value<string>();
            token.UserId = response["user_id"].Value<long>();
            token.ExpiresIn = response["expires_in"].Value<long>() == 0 ? DateTime.MaxValue : DateTimeExtensions.UnixTimeStampToDateTime(response["expires_in"].Value<long>());
            _vkontakte.AccessToken = token;
            return token;
        }
Example #30
0
        public async Task<bool> UnregisterDevice(string deviceId = null)
        {
            var parameters = new Dictionary<string, string>();

            parameters["device_id"] = deviceId;

            _vkontakte.SignMethod(parameters);

            var response = await VkRequest.GetAsync(VkConst.MethodBase + "account.unregisterDevice", parameters);

            return response["response"]?.Value<int>() == 1;
        }
Example #31
0
        public AudioModel GetRecommendations(string targetAudio)
        {
            var parameters = new Dictionary <string, object>
            {
                { "target_audio=", targetAudio },
            };

            string str = VkRequest.GetData("audio.getRecommendations", parameters);
            //десериализуем
            var audioModel = JsonConvert.DeserializeObject <AudioModel>(str);

            return(audioModel);
        }