public UserOrGroup GetListEx(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 }, { "extended", true }, { "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); } } return(_vk.Call("likes.getList", parameters, true)); }
/// <inheritdoc /> public ReadOnlyCollection <Chat> GetChat(IEnumerable <long> chatIds, ProfileFields fields = null, NameCase nameCase = null) { var isNoEmpty = chatIds == null || !chatIds.Any(); if (isNoEmpty) { throw new ArgumentException(message: "At least one chat ID must be defined", paramName: nameof(chatIds)); } var parameters = new VkParameters { { "fields", fields }, { "name_case", nameCase } }; if (chatIds.Count() > 1) { parameters.Add(name: "chat_ids", collection: chatIds); } else { parameters.Add(name: "chat_id", value: chatIds.ElementAt(index: 0)); } var response = _vk.Call(methodName: "messages.getChat", parameters: parameters); return(chatIds.Count() > 1 ? response.ToReadOnlyCollectionOf <Chat>(selector: c => c) : new ReadOnlyCollection <Chat>(list: new List <Chat> { response })); }
public ReadOnlyCollection <Message> Get( MessageType type, out int totalCount, uint?count = 20, uint?offset = null, TimeSpan?timeOffset = null, MessagesFilter?filter = null, uint?previewLength = 0, ulong?lastMessageId = null) { var parameters = new VkParameters { { "out", type }, { "offset", offset }, { "filters", filter }, { "preview_length", previewLength }, { "last_message_id", lastMessageId } }; if (count <= 200) { parameters.Add("count", count); } if (timeOffset.HasValue) { parameters.Add("time_offset", timeOffset.Value.TotalSeconds); } VkResponse response = _vk.Call("messages.get", parameters); totalCount = response["count"]; return(response["items"].ToReadOnlyCollectionOf <Message>(item => item)); }
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)); }
internal VkResponse Call(string methodName, VkParameters parameters, bool skipAuthorization = false, string apiVersion = null) { var stackTrace = new StackTrace(); MethodBase methodBase = stackTrace.GetFrame(1).GetMethod(); var attributes = methodBase.GetCustomAttributes(typeof(ApiVersionAttribute), true); if (attributes.Length > 0) { var version = ((ApiVersionAttribute)attributes[0]).Version; parameters.Add("v", version); } if (!parameters.ContainsKey("v")) { if (!string.IsNullOrEmpty(apiVersion)) { parameters.Add("v", apiVersion); } else { //TODO: WARN: раскомментировать после добавления аннотаций ко всем методам //throw new InvalidParameterException("You must use ApiVersionAttribute except adding \"v\" parameter to VkParameters"); } } else { //TODO: WARN: раскомментировать, исправив ошибки в существующем коде //throw new InvalidParameterException("You must use ApiVersionAttribute except adding \"v\" parameter to VkParameters"); } return(Call(methodName, parameters, skipAuthorization)); }
public ReadOnlyCollection <Chat> GetChat(IEnumerable <long> chatIds, ProfileFields fields = null, NameCase nameCase = null) { var isNoEmpty = chatIds == null || !chatIds.Any(); if (isNoEmpty) { throw new ArgumentException("At least one chat ID must be defined", "chatIds"); } var parameters = new VkParameters { { "fields", fields }, { "name_case", nameCase } }; if (chatIds.Count() > 1) { parameters.Add("chat_ids", chatIds); } else { parameters.Add("chat_id", chatIds.ElementAt(0)); } var response = _vk.Call("messages.getChat", parameters); if (chatIds.Count() > 1) { return(response.ToReadOnlyCollectionOf <Chat>(c => c)); } return(new ReadOnlyCollection <Chat>(new List <Chat> { response })); }
/// <summary> /// Привести к типу VkParameters. /// </summary> /// <param name="p"> Параметры. </param> /// <returns> </returns> public static VkParameters ToVkParameters(LikesGetListParams p) { var parameters = new VkParameters { { "type", p.Type } , { "owner_id", p.OwnerId } , { "item_id", p.ItemId } , { "page_url", p.PageUrl } , { "filter", p.Filter } , { "friends_only", p.FriendsOnly } , { "extended", p.Extended } , { "offset", p.Offset } , { "skip_own", p.SkipOwn } }; if (p.FriendsOnly.HasValue && p.FriendsOnly.Value) { if (p.Count <= 100) { parameters.Add(name: "count", nullableValue: p.Count); } } else { if (p.Count <= 1000) { parameters.Add(name: "count", nullableValue: p.Count); } } return(parameters); }
/// <summary> /// Устанавливает новый статус текущему пользователю. /// </summary> /// <param name="text"> /// Текст статуса, который необходимо установить текущему пользователю. Если параметр /// равен пустой строке, то статус текущего пользователя будет очищен. /// </param> /// <param name="audio"> /// Текущая аудиозапись, которую необходимо транслировать в статус, задается в формате oid_aid ( /// идентификатор владельца и идентификатор аудиозаписи, разделенные знаком подчеркивания). /// Для успешной трансляции необходимо, чтобы она была включена пользователем, в противном случае будет возвращена /// ошибка 221 ("User disabled track name broadcast"). При указании параметра audio параметр text игнорируется. /// </param> /// <returns>Возвращает true, если статус был успешно установлен, false в противном случае.</returns> /// <remarks> /// Для вызова этого метода Ваше приложение должно иметь права с битовой маской, содержащей <see cref="Settings.Status"/>. /// Страница документации ВКонтакте <see href="http://vk.com/dev/status.set"/>. /// </remarks> public bool Set([NotNull] string text, Audio audio = null) { if (text == null) throw new ArgumentNullException("text"); var parameters = new VkParameters(); if (audio != null) parameters.Add("audio", string.Format("{0}_{1}", audio.OwnerId, audio.Id)); else parameters.Add("text", text); return _vk.Call("status.set", parameters); }
public ReadOnlyCollection <Group> Get(long uid, bool extended = false, GroupsFilters filters = null, GroupsFields fields = null, uint offset = 0, uint count = 1000) { VkErrors.ThrowIfNumberIsNegative(() => uid); var parameters = new VkParameters { { "user_id", uid }, { "extended", extended }, { "filter", filters }, { "fields", fields }, { "offset", offset } }; if (count < 1000) { parameters.Add("count", count); } var response = _vk.Call("groups.get", parameters); // в первой записи количество членов группы для (response["items"]) if (!extended) { return(response.ToReadOnlyCollectionOf(id => new Group { Id = id })); } return(response["items"].ToReadOnlyCollectionOf <Group>(r => r)); }
private void EnqueueEventAnswer( string eventId, long userId, long peerId, bool haveEventData = false, string text = null, MessageEventType messageEventType = null) { VkParameters vkParameters = new VkParameters { { "event_id", eventId }, { "user_id", userId }, { "peer_id", peerId } }; if (haveEventData) { vkParameters.Add("event_data", JsonConvert.SerializeObject(new EventData() { Text = text, Type = messageEventType }) ); } commandsQueue.Enqueue(new Command(CommandType.SendMessageEventAnswer, vkParameters)); }
public ReadOnlyCollection <Message> GetDialogs(out int totalCount, out int unreadCount, uint count = 20, int?offset = null, bool unread = false, long?startMessageId = null, int?previewLength = null) { var parameters = new VkParameters { { "start_message_id", startMessageId }, { "offset", offset }, { "unread", unread }, { "preview_length", previewLength } }; if (count <= 200) { parameters.Add("count", count); } VkResponse response = _vk.Call("messages.getDialogs", parameters); // При загрузке списка непрочитанных диалогов в параметре count передается значение unreadCount, // а значение totalCount не возвращаеться totalCount = response["count"]; VkResponseArray items = response["items"]; if (unread) { unreadCount = totalCount; } else { unreadCount = response.ContainsKey("unread_dialogs") ? response["unread_dialogs"] : 0; } return(items.ToReadOnlyCollectionOf <Message>(r => r)); }
public async Task <JToken> CallAsync(Uri uri, VkParameters parameters, CancellationToken cancellationToken = default) { if (!parameters.ContainsKey("v")) { parameters.Add("v", _versionManager.Version); } var response = await _captchaHandler.Perform((sid, key) => { parameters.Add("captcha_sid", sid); parameters.Add("captcha_key", key); return(InvokeAsyncInternal(uri, parameters, cancellationToken).ConfigureAwait(false)); }); return(JToken.Parse(response)); }
public void AddNullableBoolean_NullValue() { var @params = new VkParameters(); bool?nbool = null; @params.Add(name: "NullableBoolean", nullableValue: nbool); Assert.That(actual: @params, expression: Does.Not.ContainKey(expected: "NullableBoolean")); }
public void AddNullableBoolean_NullValue() { var @params = new VkParameters(); bool?nbool = null; @params.Add("NullableBoolean", nbool); Assert.That(@params, Does.Not.ContainKey("NullableBoolean")); }
public static void StreamToStatusSync(long audioId, long ownerId, string accessKey = null) { if (StaticContent.VkApi == null) { throw new Exception("Пользователь не авторизован"); } var audioString = $"audio{ownerId}_{audioId}"; audioString = accessKey == null ? audioString : $"{audioString}_{accessKey}"; var param = new VkParameters(); param.Add("audio_ids", audioId); param.Add("target_ids", StaticContent.UserId); param.Add("access_token", StaticContent.VkApi.Token); param.Add("v", "5.101"); var json = StaticContent.VkApi.Invoke("audio.setBroadcast", param); }
public ReadOnlyCollection <Street> GetStreetsById(params int[] streetIds) { var parameters = new VkParameters(); parameters.Add <int>("street_ids", streetIds); return(_vk.Call("database.getStreetsById", parameters, true).ToReadOnlyCollectionOf <Street>(x => x)); }
public ReadOnlyCollection <City> GetCitiesById(params int[] cityIds) { var parameters = new VkParameters(); parameters.Add <int>("city_ids", cityIds); return(_vk.Call("database.getCitiesById", parameters, true).ToReadOnlyCollectionOf <City>(x => x)); }
public ReadOnlyCollection <Country> GetCountriesById(params int[] countryIds) { var parameters = new VkParameters(); parameters.Add <int>("country_ids", countryIds); return(_vk.Call("database.getCountriesById", parameters, true).ToReadOnlyCollectionOf <Country>(c => c)); }
internal VkResponse Call(string methodName, VkParameters parameters, bool skipAuthorization = false, string apiVersion = null) { if (!parameters.ContainsKey("v")) { parameters.Add("v", !string.IsNullOrEmpty(apiVersion) ? apiVersion : VkApiVersion); } return(Call(methodName, parameters, skipAuthorization)); }
/// <summary> /// Перемещает видеозаписи в альбом. /// </summary> /// <param name="videoIds">Список идентификаторов видеороликов.</param> /// <param name="albumId">Идентификатор альбома, в который перемещаются видеозаписи.</param> /// <param name="groupId">Идентификатор сообщества, которому принадлежат видеозаписи. Если параметр не указан, то работа /// ведется с альбомом текущего пользователя.</param> /// <returns>После успешного выполнения возвращает true.</returns> /// <remarks> /// Для вызова этого метода Ваше приложение должно иметь права с битовой маской, содержащей <see cref="Settings.Video"/>. /// Страница документации ВКонтакте <see href="http://vk.com/dev/video.moveToAlbum"/>. /// </remarks> public bool MoveToAlbum(IEnumerable <long> videoIds, long albumId, long?groupId = null) { if (videoIds == null) { throw new ArgumentNullException("videoIds", "Не указаны идентификаторы видеозаписей."); } VkErrors.ThrowIfNumberIsNegative(() => albumId); var parameters = new VkParameters { { "album_id", albumId }, { "group_id", groupId } }; parameters.Add("video_ids", videoIds); parameters.Add("v", _vk.ApiVersion); return(_vk.Call("video.moveToAlbum", parameters)); }
/// <summary> /// Редактирует существующий список друзей текущего пользователя. /// </summary> /// <param name="listId">идентификатор списка друзей</param> /// <param name="name">название списка друзей</param> /// <param name="userIds">идентификаторы пользователей, включенных в список</param> /// <param name="addUserIds">идентификаторы пользователей, которых необходимо добавить в список. (в случае если не передан user_ids) </param> /// <param name="deleteUserIds">идентификаторы пользователей, которых необходимо изъять из списка. (в случае если не передан user_ids) </param> /// <returns>После успешного выполнения возвращает true.</returns> /// <remarks> /// Страница документации ВКонтакте <see href="http://vk.com/dev/friends.editList"/>. /// </remarks> public bool EditList(long listId, string name = null, IEnumerable <long> userIds = null, IEnumerable <long> addUserIds = null, IEnumerable <long> deleteUserIds = null) { VkErrors.ThrowIfNumberIsNegative(() => listId); var parameters = new VkParameters { { "name", name }, { "list_id", listId } }; parameters.Add("user_ids", userIds); parameters.Add("add_user_ids", addUserIds); parameters.Add("delete_user_ids", deleteUserIds); VkResponse response = _vk.Call("friends.editList", parameters); return(response); }
public async static Task <long> ToLibrary(long audioId, string accessKey = null) { if (StaticContent.VkApi == null) { throw new Exception("Пользователь не авторизован"); } var param = new VkParameters(); param.Add("audio_id", audioId); param.Add("owner_id", StaticContent.UserId); if (accessKey != null) { param.Add("access_key", accessKey); } var id = await StaticContent.VkApi.CallAsync <long>("audio.add", param); //var id = await StaticContent.VkApi.Audio.AddAsync(audioId, StaticContent.UserId); return(id); }
/// <summary> /// Устанавливает новый статус текущему пользователю. /// </summary> /// <param name="text"> /// Текст статуса, который необходимо установить текущему пользователю. Если параметр /// равен пустой строке, то статус текущего пользователя будет очищен. /// </param> /// <param name="audio"> /// Текущая аудиозапись, которую необходимо транслировать в статус, задается в формате oid_aid ( /// идентификатор владельца и идентификатор аудиозаписи, разделенные знаком подчеркивания). /// Для успешной трансляции необходимо, чтобы она была включена пользователем, в противном случае будет возвращена /// ошибка 221 ("User disabled track name broadcast"). При указании параметра audio параметр text игнорируется. /// </param> /// <returns>Возвращает true, если статус был успешно установлен, false в противном случае.</returns> /// <remarks> /// Для вызова этого метода Ваше приложение должно иметь права с битовой маской, содержащей <see cref="Settings.Status"/>. /// Страница документации ВКонтакте <see href="http://vk.com/dev/status.set"/>. /// </remarks> public bool Set([NotNull] string text, Audio audio = null) { if (text == null) { throw new ArgumentNullException("text"); } var parameters = new VkParameters(); if (audio != null) { parameters.Add("audio", string.Format("{0}_{1}", audio.OwnerId, audio.Id)); } else { parameters.Add("text", text); } return(_vk.Call("status.set", parameters)); }
public async static Task StreamToStatus(long audioId, long ownerId, string accessKey = null) { if (StaticContent.VkApi == null) { throw new Exception("Пользователь не авторизован"); } var audioString = $"audio{ownerId}_{audioId}"; audioString = accessKey == null ? audioString : $"{audioString}_{accessKey}"; var param = new VkParameters(); param.Add("audio_ids", audioId); param.Add("target_ids", StaticContent.UserId); param.Add("access_token", StaticContent.VkApi.Token); param.Add("v", "5.101"); var json = await StaticContent.VkApi.InvokeAsync("audio.setBroadcast", param); //var b =json + "a"; // var ab = await StaticContent.VkApi.CallAsync<List<long>>("audio.setBroadcast", param); }
public void AddNullableBoolean_FalseValue() { var @params = new VkParameters(); bool?nbool = false; @params.Add("NullableBoolean", nbool); Assert.That(@params, Does.ContainKey("NullableBoolean")); var val = @params["NullableBoolean"]; Assert.That(val, Is.EqualTo("0")); }
public void AddNullableBoolean_FalseValue() { var @params = new VkParameters(); bool?nbool = false; @params.Add(name: "NullableBoolean", nullableValue: nbool); Assert.That(actual: @params, expression: Does.ContainKey(expected: "NullableBoolean")); var val = @params[key : "NullableBoolean"]; Assert.That(actual: val, expression: Is.EqualTo(expected: "0")); }
public bool DeleteDialog(long id, bool isChat, uint?offset = null, uint?count = null) { var parameters = new VkParameters { { isChat ? "chat_id" : "uid", id }, { "offset", offset } }; if (count <= 10000) { parameters.Add("count", count); } return(_vk.Call("messages.deleteDialog", parameters)); }
public ReadOnlyCollection<User> Get([NotNull] IEnumerable<long> userIds, ProfileFields fields = null, NameCase nameCase = null) { if (userIds == null) throw new ArgumentNullException("userIds"); var parameters = new VkParameters { { "fields", fields }, { "name_case", nameCase } }; parameters.Add("user_ids", userIds); VkResponseArray response = _vk.Call("users.get", parameters); return response.ToReadOnlyCollectionOf<User>(x => x); }
public async static Task <IList <IAudioFile> > GetTracks(long playlistId, long ownerId = 0, string key = null) { var param = new VkParameters(); param.Add("playlist_id", playlistId); param.Add("owner_id", ownerId); param.Add("access_key", key); var music = await StaticContent.VkApi.CallAsync <VkCollection <Audio> >("audio.get", param); //var music = ownerId == 0 ? await StaticContent.VkApi.Audio.GetAsync(new VkNet.Model.RequestParams.AudioGetParams() { PlaylistId = playlistId }): // await StaticContent.VkApi.Audio.GetAsync(new VkNet.Model.RequestParams.AudioGetParams() { PlaylistId = playlistId, OwnerId = ownerId}); IList <IAudioFile> tracks = new List <IAudioFile>(); foreach (var track in music) { tracks.Add(track.ToIAudioFile()); } return(tracks); }
public void EyeInit() { var webClient = new WebClient() { Encoding = Encoding.UTF8}; var param = new VkParameters() { }; param.Add("group_id", groupId); param.Add("access_token", data); dynamic responseLongPoll = JObject.Parse(vkApi.Call("groups.getLongPollServer", param).RawJson); string json = string.Empty; string url = string.Empty; while (true) { try { url = string.Format("{0}?act=a_check&key={1}&ts={2}&wait=25&mode=2&version=3", responseLongPoll.response.server.ToString(), responseLongPoll.response.key.ToString(), json != string.Empty ? JObject.Parse(json)["ts"].ToString() : responseLongPoll.response.ts.ToString()); json = webClient.DownloadString(url); var col = JObject.Parse(json)["updates"].ToList(); foreach (var item in col) { if (item["type"].ToString() == "message_new") { fromId = item["object"]["message"]["from_id"].ToString(); peerId = item["object"]["message"]["peer_id"].ToString(); //id = item["object"]["message"]["id"].ToString(); message = item["object"]["message"]["text"].ToString(); if (long.Parse(peerId) > 2000000000) log.Print($"[{DateTime.Now:HH:mm}] Новое сообщение из беседы от ({WhoIs(long.Parse(fromId))}) {item["object"]["message"]["text"]}", ConsoleColor.White); else log.Print($"[{DateTime.Now:HH:mm}] Новое сообщение от ({WhoIs(long.Parse(fromId))}) {item["object"]["message"]["text"]}", ConsoleColor.White); CheckCommands(message); } } }
public void GetApiUrl_IntArray() { var arr = new[] { 1, 65 }; var parameters = new VkParameters(); parameters.Add<int>("country_ids", arr); const string expected = "https://api.vk.com/method/database.getCountriesById?country_ids=1,65&access_token=token"; var url = Api.GetApiUrl("database.getCountriesById", parameters); Assert.That(url, Is.EqualTo(expected)); }
public ReadOnlyCollection <Chat> GetChat(IEnumerable <long> chatIds, ProfileFields fields = null, Enums.SafetyEnums.NameCase nameCase = null) { if (chatIds == null || chatIds.Count <long>() == 0) { throw new ArgumentException("At least one chat ID must be defined", "chatIds"); } var parameters = new VkParameters { { "fields", fields }, { "name_case", nameCase } }; if (chatIds.Count <long>() > 1) { string ids = ""; foreach (long chatId in chatIds) { ids += chatId.ToString() + ','; } parameters.Add("chat_ids", ids.Remove(ids.Length - 1, 1)); } else { parameters.Add("chat_id", chatIds.ElementAt(0)); } var response = _vk.Call("messages.getChat", parameters); if (chatIds.Count <long>() > 1) { return(response.ToReadOnlyCollectionOf <Chat>(c => c)); } else { return(new ReadOnlyCollection <Chat>(new List <Chat> { response })); } }
public ReadOnlyCollection<User> SearchAdvanced(out int itemsCount, Sex sex, int age_from, ProfileFields fields = null, int count = 20, int offset = 0) { var parameters = new VkParameters { { "q", "" }, { "fields", fields }, { "count", count }, {"sort", 1}, {"country", 1}, {"sex",sex} ,{"age_from", age_from}, {"online", 1}, {"has_photo", 1}}; if (offset > 0) parameters.Add("offset", offset); VkResponseArray response = _vk.Call("users.search", parameters); itemsCount = response[0]; return response.Skip(1).ToReadOnlyCollectionOf<User>(r => r); }
/// <summary> /// Редактирует списки друзей для выбранного друга. /// </summary> /// <param name="userId">идентификатор пользователя (из числа друзей), для которого необходимо отредактировать списки друзей</param> /// <param name="listIds">идентификаторы списков друзей, в которые нужно добавить пользователя</param> /// <returns>После успешного выполнения возвращает true.</returns> /// <remarks> /// Страница документации ВКонтакте <see href="http://vk.com/dev/friends.edit"/>. /// </remarks> public bool Edit(long userId, IEnumerable <long> listIds) { VkErrors.ThrowIfNumberIsNegative(() => userId); var parameters = new VkParameters { { "user_id", userId } }; parameters.Add("list_ids", listIds); VkResponse response = _vk.Call("friends.edit", parameters); return(response); }
public ReadOnlyCollection<User> Search([NotNull] string query, out int itemsCount, ProfileFields fields = null, int count = 20, int offset = 0) { if (string.IsNullOrEmpty(query)) throw new ArgumentException("Query can not be null or empty."); var parameters = new VkParameters { { "q", query }, { "fields", fields }, { "count", count } }; if (offset > 0) parameters.Add("offset", offset); VkResponseArray response = _vk.Call("users.search", parameters); itemsCount = response[0]; return response.Skip(1).ToReadOnlyCollectionOf<User>(r => r); }
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); }
/// <summary> /// Добавляет пользователя в черный список группы. /// </summary> /// <param name="groupId">Идентификатор группы.</param> /// <param name="userId">Идентификатор пользователя, которого нужно добавить в черный список.</param> /// <param name="endDate">Дата завершения срока действия бана. Если параметр не указан пользователь будет заблокирован навсегда.</param> /// <param name="reason">Причина бана <see cref="BanReason"/>.</param> /// <param name="comment">Текст комментария к бану.</param> /// <param name="commentVisible">true – текст комментария будет отображаться пользователю. false – текст комментария не доступен /// пользователю (по умолчанию).</param> /// <returns>После успешного выполнения возвращает true.</returns> /// <remarks> /// Страница документации ВКонтакте <see href="http://vk.com/dev/groups.banUser"/>. /// </remarks> public bool BanUser(long groupId, long userId, DateTime? endDate = null, BanReason? reason = null, string comment = "", bool commentVisible = false) { VkErrors.ThrowIfNumberIsNegative(() => groupId); VkErrors.ThrowIfNumberIsNegative(() => userId); var parameters = new VkParameters { {"group_id", groupId}, {"user_id", userId}, {"end_date", endDate}, {"comment", comment}, {"comment_visible", commentVisible} }; parameters.Add("reason", reason); return _vk.Call("groups.banUser", parameters); }
internal VkResponse Call(string methodName, VkParameters parameters, bool skipAuthorization = false, string apiVersion = null) { if (!parameters.ContainsKey("v")) { if (!string.IsNullOrEmpty(apiVersion)) parameters.Add("v", apiVersion); else { //TODO: WARN: раскомментировать после добавления аннотаций ко всем методам //throw new InvalidParameterException("You must use ApiVersionAttribute except adding \"v\" parameter to VkParameters"); } } else { //TODO: WARN: раскомментировать, исправив ошибки в существующем коде //throw new InvalidParameterException("You must use ApiVersionAttribute except adding \"v\" parameter to VkParameters"); } return Call(methodName, parameters, skipAuthorization); }
public bool MoveToAlbum(IEnumerable<long> videoIds, long albumId, long? groupId = null) { if (videoIds == null) throw new ArgumentNullException("videoIds", "Не указаны идентификаторы видеозаписей."); VkErrors.ThrowIfNumberIsNegative(() => albumId); var parameters = new VkParameters { { "album_id", albumId }, { "group_id", groupId } }; parameters.Add("video_ids", videoIds); return _vk.Call("video.moveToAlbum", parameters); }
private long[] getGroups(ulong uid, bool extended = false, GroupsFilters filters = null, GroupsFields fields = null, uint offset = 0, uint count = 1000) { var parameters = new VkParameters { { "uid", uid }, { "extended", extended }, { "filter", filters }, { "fields", fields }, { "offset", offset } }; if (count < 1000) { parameters.Add("count", count); } string answer = vkapi.Invoke("groups.get", parameters, false); JObject json = JObject.Parse(answer); JArray rawResponse = json["response"] as JArray; return rawResponse.Select(jv => (long)jv).ToArray(); }
public ReadOnlyCollection<Group> Get(ulong uid, bool extended = false, GroupsFilters filters = null, GroupsFields fields = null, uint offset = 0, uint count = 1000) { var parameters = new VkParameters { { "uid", uid }, { "extended", extended }, { "filter", filters }, { "fields", fields }, { "offset", offset } }; if (count < 1000) { parameters.Add("count", count); } var response = _vk.Call("groups.get", parameters); // в первой записи количество членов группы для (response["items"]) return !extended ? response.ToReadOnlyCollectionOf(id => new Group { Id = id }) : response["items"].ToReadOnlyCollectionOf<Group>(r => r); }
/// <summary> /// Транслирует аудиозапись в статус пользователю или сообществу. /// </summary> /// <param name="audio">Идентификатор аудиозаписи, которая будет отображаться в статусе, в формате owner_id_audio_id. Например, 1_190442705. /// Если параметр не указан, аудиостатус указанных сообществ и пользователя будет удален.</param> /// <param name="targetIds">Перечисленные через запятую идентификаторы сообществ и пользователя, которым будет транслироваться аудиозапись. /// Идентификаторы сообществ должны быть заданы в формате "-gid", где gid - идентификатор сообщества. Например, 1,-34384434. По умолчанию аудиозапись /// транслируется текущему пользователю.</param> /// <returns>В случае успешного выполнения возвращает массив идентификаторов сообществ и пользователя, которым был установлен или удален аудиостатус.</returns> public ReadOnlyCollection<long> SetBroadcast(string audio, IEnumerable<long> targetIds) { VkErrors.ThrowIfNullOrEmpty(() => audio); var parameters = new VkParameters { {"audio", audio} }; parameters.Add("target_ids", targetIds); VkResponseArray response = _vk.Call("audio.setBroadcast", parameters); return response.ToReadOnlyCollectionOf<long>(x => x); }
public NewsSuggestions GetSuggestedSources(int offset, int count = 20, bool shuffle = false, UsersFields fields = null) { var parameters = new VkParameters { { "offset", offset }, { "shuffle", shuffle }, { "fields", fields } }; if (count <= 1000) { parameters.Add("count", count); } return _vk.Call("newsfeed.getSuggestedSources", parameters); }
public ReadOnlyCollection<Chat> GetChat(IEnumerable<long> chatIds, ProfileFields fields = null, NameCase nameCase = null) { var isNoEmpty = chatIds == null || !chatIds.Any(); if (isNoEmpty) { throw new ArgumentException("At least one chat ID must be defined", "chatIds"); } var parameters = new VkParameters { { "fields", fields }, { "name_case", nameCase } }; if (chatIds.Count() > 1) { parameters.Add("chat_ids", chatIds); } else { parameters.Add("chat_id", chatIds.ElementAt(0)); } var response = _vk.Call("messages.getChat", parameters); if (chatIds.Count() > 1) { return response.ToReadOnlyCollectionOf<Chat>(c => c); } return new ReadOnlyCollection<Chat>(new List<Chat> { response }); }
public ReadOnlyCollection<City> GetCitiesById(params int[] cityIds) { var parameters = new VkParameters(); parameters.Add<int>("city_ids", cityIds); VkResponseArray response = _vk.Call("database.getCitiesById", parameters, true); return response.ToReadOnlyCollectionOf<City>(x => x); }
public ReadOnlyCollection<Street> GetStreetsById(params int[] streetIds) { var parameters = new VkParameters(); parameters.Add<int>("street_ids", streetIds); VkResponseArray response = _vk.Call("database.getStreetsById", parameters, true); return response.ToReadOnlyCollectionOf<Street>(x => x); }
public ReadOnlyCollection<Country> GetCountriesById(params int[] countryIds) { var parameters = new VkParameters(); parameters.Add<int>("country_ids", countryIds); VkResponseArray response = _vk.Call("database.getCountriesById", parameters, true); return response.ToReadOnlyCollectionOf<Country>(c => c); }
public ReadOnlyCollection<Chat> GetChat(IEnumerable<long> chatIds, ProfileFields fields = null, Enums.SafetyEnums.NameCase nameCase = null) { if (chatIds == null || chatIds.Count<long>() == 0) throw new ArgumentException("At least one chat ID must be defined", "chatIds"); var parameters = new VkParameters { { "fields", fields }, { "name_case", nameCase } }; if (chatIds.Count<long>() > 1) { string ids = ""; foreach (long chatId in chatIds) ids += chatId.ToString() + ','; parameters.Add("chat_ids", ids.Remove(ids.Length - 1, 1)); } else parameters.Add("chat_id", chatIds.ElementAt(0)); var response = _vk.Call("messages.getChat", parameters); if (chatIds.Count<long>() > 1) return response.ToReadOnlyCollectionOf<Chat>(c => c); else return new ReadOnlyCollection<Chat>(new List<Chat> { response }); }
/// <summary> /// Создает список друзей, который будет использоваться при отправке пользователем приглашений в приложение. /// </summary> /// <param name="type">Tип создаваемого списка друзей.</param> /// <param name="extended">Параметр, определяющий необходимость возвращать расширенную информацию о пользователях. /// 0 — возвращаются только идентификаторы; /// 1 — будут дополнительно возвращены имя и фамилия. флаг, может принимать значения 1 или 0, по умолчанию 0 (Флаг, может принимать значения 1 или 0, по умолчанию 0).</param> /// <param name="count">Количество пользователей в создаваемом списке.</param> /// <param name="offset">Смещение относительно первого пользователя для выборки определенного подмножества.</param> /// <param name="fields">Список дополнительных полей профилей, которые необходимо вернуть. См. подробное описание.</param> /// <returns> /// После успешного выполнения возвращает список пользователей. /// </returns> /// <remarks> /// Страница документации ВКонтакте <see href="http://vk.com/dev/apps.getFriendsList" />. /// </remarks> public VkCollection<User> GetFriendsList(AppRequestType type, bool? extended = null, long? count = null, long? offset = null, UsersFields fields = null) { var parameters = new VkParameters { { "extended", extended }, { "offset", offset }, { "type", type }, { "fields", fields } }; if (count <= 5000) { parameters.Add("count", count); } return _vk.Call("apps.getFriendsList", parameters).ToVkCollectionOf<User>(x => x); }
/// <summary> /// Привести к типу VkParameters. /// </summary> /// <param name="p">Параметры.</param> /// <returns></returns> internal static VkParameters ToVkParameters(NewsFeedSearchParams p) { var parameters = new VkParameters { { "q", p.Query }, { "extended", p.Extended }, { "latitude", p.Latitude }, { "longitude", p.Longitude }, { "start_time", p.StartTime }, { "end_time", p.EndTime }, { "start_from", p.StartFrom }, { "fields", p.Fields } }; if (p.Count <= 200) { parameters.Add("count", p.Count); } return parameters; }
public ReadOnlyCollection<Mention> GetMentions(out int total, long ownerId = 0, DateTime? startTime = null, DateTime? endTime = null, ulong offset = 0, ulong count = 20) { var parameters = new VkParameters { { "owner_id", ownerId }, { "start_time", startTime }, { "end_time", endTime }, { "offset", offset } }; if (count <= 50) { parameters.Add("count", count); } var response = _vk.Call("newsfeed.getMentions", parameters); total = response["count"]; return response["items"].ToReadOnlyCollectionOf<Mention>(x => x); }
/// <summary> /// Редактирует списки друзей для выбранного друга. /// </summary> /// <param name="userId">идентификатор пользователя (из числа друзей), для которого необходимо отредактировать списки друзей</param> /// <param name="listIds">идентификаторы списков друзей, в которые нужно добавить пользователя</param> /// <returns>После успешного выполнения возвращает true.</returns> /// <remarks> /// Страница документации ВКонтакте <see href="http://vk.com/dev/friends.edit"/>. /// </remarks> public bool Edit(long userId, IEnumerable<long> listIds) { VkErrors.ThrowIfNumberIsNegative(() => userId); var parameters = new VkParameters { { "user_id", userId } }; parameters.Add("list_ids", listIds); VkResponse response = _vk.Call("friends.edit", parameters); return response; }
public ReadOnlyCollection<User> GetFriendsList(out long totalCount, AppRequestType type, bool? extended = null, long? count = null, long? offset = null, UsersFields fields = null) { var parameters = new VkParameters { { "extended", extended }, { "offset", offset }, { "type", type }, { "fields", fields } }; if (count <= 5000) { parameters.Add("count", count); } var result = _vk.Call("apps.getFriendsList", parameters); totalCount = result["count"]; return result["items"].ToReadOnlyCollectionOf<User>(x => fields == null ? new User {Id = x} : x); }
/// <summary> /// Редактирует существующий список друзей текущего пользователя. /// </summary> /// <param name="listId">идентификатор списка друзей</param> /// <param name="name">название списка друзей</param> /// <param name="userIds">идентификаторы пользователей, включенных в список</param> /// <param name="addUserIds">идентификаторы пользователей, которых необходимо добавить в список. (в случае если не передан user_ids) </param> /// <param name="deleteUserIds">идентификаторы пользователей, которых необходимо изъять из списка. (в случае если не передан user_ids) </param> /// <returns>После успешного выполнения возвращает true.</returns> /// <remarks> /// Страница документации ВКонтакте <see href="http://vk.com/dev/friends.editList"/>. /// </remarks> public bool EditList(long listId, string name = null, IEnumerable<long> userIds = null, IEnumerable<long> addUserIds = null, IEnumerable<long> deleteUserIds = null) { VkErrors.ThrowIfNumberIsNegative(() => listId); var parameters = new VkParameters { {"name", name}, {"list_id", listId} }; parameters.Add("user_ids", userIds); parameters.Add("add_user_ids", addUserIds); parameters.Add("delete_user_ids", deleteUserIds); VkResponse response = _vk.Call("friends.editList", parameters); return response; }
/// <summary> /// Перемещает аудиозаписи в альбом. /// </summary> /// <param name="albumId">идентификатор альбома, в который нужно переместить аудиозаписи</param> /// <param name="audioIds">идентификаторы аудиозаписей, которые требуется переместить</param> /// <param name="groupId">идентификатор сообщества, в котором размещены аудиозаписи. Если параметр не указан, работа ведется с аудиозаписями текущего пользователя</param> /// <returns>После успешного выполнения возвращает true</returns> /// <remarks> /// Страница документации ВКонтакте <see href="http://vk.com/dev/audio.moveToAlbum"/>. /// </remarks> public bool MoveToAlbum(long albumId, IEnumerable<long> audioIds, long? groupId = null) { VkErrors.ThrowIfNumberIsNegative(() => albumId); VkErrors.ThrowIfNumberIsNegative(() => groupId); var parameters = new VkParameters { {"album_id", albumId}, {"group_id", groupId} }; parameters.Add("audio_ids", audioIds); VkResponse response = _vk.Call("audio.moveToAlbum", parameters); return response; }
/// <summary> /// Создает новый список друзей у текущего пользователя. /// </summary> /// <param name="name">Название создаваемого списка друзей.</param> /// <param name="userIds">Идентификаторы пользователей, которых необходимо поместить в созданный список.</param> /// <returns>После успешного выполнения возвращает идентификатор созданного списка друзей.</returns> /// <remarks> /// Для вызова этого метода Ваше приложение должно иметь права с битовой маской, содержащей <see cref="Settings.Friends"/>. /// Страница документации ВКонтакте <see href="http://vk.com/dev/friends.addList"/>. /// </remarks> public long AddList(string name, IEnumerable<long> userIds) { VkErrors.ThrowIfNullOrEmpty(() => name); var parameters = new VkParameters { {"name", name} }; parameters.Add("user_ids", userIds); VkResponse response = _vk.Call("friends.addList", parameters); return response["lid"]; }
public ReadOnlyCollection<ulong> GetMembers(string gid, out int totalCount, uint? count = null, uint? offset = null, GroupsSort sort = null, GroupsFields fields = null, GroupsFilters filters = null) { var parameters = new VkParameters { { "gid", gid }, { "offset", offset }, { "sort", sort }, { "fields", fields }, { "filter", filters } }; if (count.HasValue && count.Value > 0 && count.Value < 1000) { parameters.Add("count", count); } var response = _vk.Call("groups.getMembers", parameters, true); totalCount = response["count"]; VkResponseArray users = response["users"]; return users.ToReadOnlyCollectionOf<ulong>(x => x); }
public bool DeleteDialog(long userId, bool isChat, long? peerId = null, uint? offset = null, uint? count = null) { var parameters = new VkParameters { { isChat ? "chat_id" : "user_id", userId }, { "offset", offset }, { "peer_id", peerId } }; if (count <= 10000) { parameters.Add("count", count); } return _vk.Call("messages.deleteDialog", parameters); }
public ReadOnlyCollection<Message> Get( MessageType type, out int totalCount, int? count = null, int? offset = null, TimeSpan? timeOffset = null, MessagesFilter? filter = null, int? previewLength = null, long? lastMessageId = null) { VkErrors.ThrowIfNumberIsNegative(() => count); VkErrors.ThrowIfNumberIsNegative(() => offset); VkErrors.ThrowIfNumberIsNegative(() => previewLength); VkErrors.ThrowIfNumberIsNegative(() => lastMessageId); var parameters = new VkParameters { { "out", type }, { "offset", offset }, { "count", count }, { "filters", filter }, { "preview_length", previewLength }, { "last_message_id", lastMessageId } }; if (timeOffset.HasValue) parameters.Add("time_offset", timeOffset.Value.TotalSeconds); VkResponse response = _vk.Call("messages.get", parameters); totalCount = response["count"]; return response["items"].ToReadOnlyCollectionOf<Message>(item => item); }
public bool SetSilenceMode([NotNull] string token, int? time = null, int? chatID = null, int? userID = null, bool? sound = null) { VkErrors.ThrowIfNullOrEmpty(() => token); var parameters = new VkParameters { {"token", token}, {"time", time}, {"chat_id", chatID}, {"user_id", userID} }; if(sound.HasValue) parameters.Add("sound", sound.Value); // Cause Add(string, bool?) deletes parameter whem bool? value equals to false. return _vk.Call("account.setSilenceMode", parameters); }