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); }
/// <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); }
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); }
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); }
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); }
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); }
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>()); }
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); } }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
/// <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); }
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>()); }
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); }
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); }
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); }
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>()); }
/// <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); }
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; }
//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); }
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); }
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); }
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>()); }
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>()); }
/// <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; }
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; }
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); }