summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/SevereCloud/vksdk/v2/api
diff options
context:
space:
mode:
authorIvanik <ivan170102@gmail.com>2021-01-29 04:25:14 +0500
committerGitHub <noreply@github.com>2021-01-29 00:25:14 +0100
commit8764be74616bde87bbbf6c32901cd9f43264d1e0 (patch)
tree88902ba17d6a6d245cadb7e0b277bee7ef424f99 /vendor/github.com/SevereCloud/vksdk/v2/api
parent5dd15ef8e716c65accb6cd021095c0e19913d55f (diff)
downloadmatterbridge-msglm-8764be74616bde87bbbf6c32901cd9f43264d1e0.tar.gz
matterbridge-msglm-8764be74616bde87bbbf6c32901cd9f43264d1e0.tar.bz2
matterbridge-msglm-8764be74616bde87bbbf6c32901cd9f43264d1e0.zip
Add vk bridge (#1372)
* Add vk bridge * Vk bridge attachments * Vk bridge forwarded messages * Vk bridge sample config and code cleanup * Vk bridge add vendor * Vk bridge message edit * Vk bridge: fix fetching names of other bots * Vk bridge: code cleanup * Vk bridge: fix shadows declaration * Vk bridge: remove UseFileURL
Diffstat (limited to 'vendor/github.com/SevereCloud/vksdk/v2/api')
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/README.md555
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/account.go196
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/ads.go581
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/api.go359
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/apps.go149
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/appwidgets.go100
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/auth.go26
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/board.go173
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/captcha.go7
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/database.go163
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/docs.go137
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/donut.go49
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/downloadedGames.go19
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/errors.go927
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/execute.go52
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/fave.go231
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/friends.go295
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/gifts.go32
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/groups.go712
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/leadforms.go89
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/leads.go74
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/likes.go79
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/market.go319
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/messages.go616
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/newsfeed.go230
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/notes.go100
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/notifications.go54
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/orders.go90
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/pages.go81
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/photos.go613
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/podcasts.go179
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/polls.go106
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/prettycards.go79
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/search.go17
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/secure.go110
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/stats.go35
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/status.go23
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/storage.go48
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/stories.go305
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/streaming.go67
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/upload.go961
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/users.go104
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/utils.go105
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/video.go338
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/wall.go383
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/api/widgets.go33
46 files changed, 10001 insertions, 0 deletions
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/README.md b/vendor/github.com/SevereCloud/vksdk/v2/api/README.md
new file mode 100644
index 00000000..770ab025
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/README.md
@@ -0,0 +1,555 @@
+# API
+
+[![PkgGoDev](https://pkg.go.dev/badge/github.com/SevereCloud/vksdk/v2/api)](https://pkg.go.dev/github.com/SevereCloud/vksdk/v2/api)
+[![VK](https://img.shields.io/badge/developers-%234a76a8.svg?logo=VK&logoColor=white)](https://vk.com/dev/first_guide)
+
+Данная библиотека поддерживает версию API **5.122**.
+
+## Запросы
+
+В начале необходимо инициализировать api с помощью [ключа доступа](https://vk.com/dev/access_token):
+
+```go
+vk := api.NewVK("<TOKEN>")
+```
+
+### Запросы к API
+
+- `users.get` -> `vk.UsersGet(api.Params{})`
+- `groups.get` с extended=1 -> `vk.GroupsGetExtended(api.Params{})`
+
+Список всех методов можно найти на
+[данной странице](https://pkg.go.dev/github.com/SevereCloud/vksdk/v2/api?tab=doc#VK).
+
+Пример запроса [`users.get`](https://vk.com/dev/users.get)
+
+```go
+users, err := vk.UsersGet(api.Params{
+ "user_ids": 1,
+})
+if err != nil {
+ log.Fatal(err)
+}
+```
+
+### Параметры
+
+[![PkgGoDev](https://pkg.go.dev/badge/github.com/SevereCloud/vksdk/v2/api/params)](https://pkg.go.dev/github.com/SevereCloud/vksdk/v2/api/params)
+
+Модуль params предназначен для генерации параметров запроса.
+
+```go
+// import "github.com/SevereCloud/vksdk/v2/api/params"
+
+b := params.NewMessageSendBuilder()
+b.PeerID(123)
+b.Random(0)
+b.DontParseLinks(false)
+b.Message("Test message")
+
+res, err = api.MessageSend(b.Params)
+```
+
+### Обработка ошибок
+
+[![VK](https://img.shields.io/badge/developers-%234a76a8.svg?logo=VK&logoColor=white)](https://vk.com/dev/errors)
+
+Обработка ошибок полностью поддерживает методы
+[go 1.13](https://blog.golang.org/go1.13-errors)
+
+```go
+if errors.Is(err, api.ErrAuth) {
+ log.Println("User authorization failed")
+}
+```
+
+```go
+var e *api.Error
+if errors.As(err, &e) {
+ switch e.Code {
+ case api.ErrCaptcha:
+ log.Println("Требуется ввод кода с картинки (Captcha)")
+ log.Printf("sid %s img %s", e.CaptchaSID, e.CaptchaImg)
+ case 1:
+ log.Println("Код ошибки 1")
+ default:
+ log.Printf("Ошибка %d %s", e.Code, e.Text)
+ }
+}
+```
+
+Для Execute существует отдельная ошибка `ExecuteErrors`
+
+### Запрос любого метода
+
+Пример запроса [users.get](https://vk.com/dev/users.get)
+
+```go
+// Определяем структуру, которую вернет API
+var response []object.UsersUser
+var err api.Error
+
+params := api.Params{
+ "user_ids": 1,
+}
+
+// Делаем запрос
+err = vk.RequestUnmarshal("users.get", &response, params)
+if err != nil {
+ log.Fatal(err)
+}
+
+log.Print(response)
+```
+
+### Execute
+
+[![PkgGoDev](https://pkg.go.dev/badge/github.com/SevereCloud/vksdk/v2/errors)](https://pkg.go.dev/github.com/SevereCloud/vksdk/v2/api#VK.Execute)
+[![VK](https://img.shields.io/badge/developers-%234a76a8.svg?logo=VK&logoColor=white)](https://vk.com/dev/execute)
+
+Универсальный метод, который позволяет запускать последовательность других
+методов, сохраняя и фильтруя промежуточные результаты.
+
+```go
+var response struct {
+ Text string `json:"text"`
+}
+
+err = vk.Execute(`return {text: "hello"};`, &response)
+if err != nil {
+ log.Fatal(err)
+}
+
+log.Print(response.Text)
+```
+
+### Обработчик запросов
+
+Обработчик `vk.Handler` должен возвращать структуру ответа от VK API и ошибку.
+В качестве параметров принимать название метода и параметры.
+
+```go
+vk.Handler = func(method string, params ...api.Params) (api.Response, error) {
+ // ...
+}
+```
+
+Это может потребоваться, если вы можете поставить свой обработчик с
+[fasthttp](https://github.com/valyala/fasthttp) и логгером.
+
+Стандартный обработчик использует [encoding/json](https://pkg.go.dev/net/http)
+и [net/http](https://pkg.go.dev/net/http). В стандартном обработчике можно
+настроить ограничитель запросов и HTTP клиент.
+
+#### Ограничитель запросов
+
+К методам API ВКонтакте (за исключением методов из секций secure и ads) с
+ключом доступа пользователя или сервисным ключом доступа можно обращаться не
+чаще 3 раз в секунду. Для ключа доступа сообщества ограничение составляет 20
+запросов в секунду. Если логика Вашего приложения подразумевает вызов
+нескольких методов подряд, имеет смысл обратить внимание на метод execute. Он
+позволяет совершить до 25 обращений к разным методам в рамках одного запроса.
+
+Для методов секции ads действуют собственные ограничения, ознакомиться с ними
+Вы можете на [этой странице](https://vk.com/dev/ads_limits).
+
+Максимальное число обращений к методам секции secure зависит от числа
+пользователей, установивших приложение. Если приложение установило меньше 10
+000 человек, то можно совершать 5 запросов в секунду, до 100 000 — 8 запросов,
+до 1 000 000 — 20 запросов, больше 1 млн. — 35 запросов в секунду.
+
+Если Вы превысите частотное ограничение, сервер вернет ошибку с кодом
+**6: "Too many requests per second."**.
+
+С помощью параметра `vk.Limit` можно установить ограничение на определенное
+количество запросов в секунду
+
+### HTTP client
+
+В модуле реализована возможность изменять HTTP клиент с помощью параметра
+`vk.Client`
+
+Пример прокси
+
+```go
+
+dialer, _ := proxy.SOCKS5("tcp", "127.0.0.1:9050", nil, proxy.Direct)
+httpTransport := &http.Transport{
+ Dial: dialer.Dial,
+}
+httpTransport.Dial = dialer.Dial
+
+client := &http.Client{
+ Transport: httpTransport,
+}
+
+vk.Client = client
+```
+
+### Ошибка с Captcha
+
+[![VK](https://img.shields.io/badge/developers-%234a76a8.svg?logo=VK&logoColor=white)](https://vk.com/dev/captcha_error)
+
+Если какое-либо действие (например, отправка сообщения) выполняется
+пользователем слишком часто, то запрос к API может возвращать ошибку
+"Captcha needed". При этом пользователю понадобится ввести код с изображения
+и отправить запрос повторно с передачей введенного кода Captcha в параметрах
+запроса.
+
+**Код ошибки**: 14
+**Текст ошибки**: Captcha needed
+
+Если возникает данная ошибка, то в сообщении об ошибке передаются также
+следующие параметры:
+
+- `err.CaptchaSID` - идентификатор captcha
+- `err.CaptchaImg` - ссылка на изображение, которое нужно показать
+ пользователю, чтобы он ввел текст с этого изображения.
+
+В этом случае следует запросить пользователя ввести текст с изображения
+`err.CaptchaImg` и повторить запрос, добавив в него параметры:
+
+- `captcha_sid` - полученный идентификатор
+- `captcha_key` - текст, который ввел пользователь
+
+## Загрузка файлов
+
+[![VK](https://img.shields.io/badge/developers-%234a76a8.svg?logo=VK&logoColor=white)](https://vk.com/dev/upload_files)
+
+### 1. Загрузка фотографий в альбом
+
+Допустимые форматы: JPG, PNG, GIF.
+Файл объемом не более 50 МБ, соотношение сторон не менее 1:20
+
+Загрузка фотографий в альбом для текущего пользователя:
+
+```go
+photosPhoto, err = vk.UploadPhoto(albumID, response.Body)
+```
+
+Загрузка фотографий в альбом для группы:
+
+```go
+photosPhoto, err = vk.UploadPhotoGroup(groupID, albumID, response.Body)
+```
+
+### 2. Загрузка фотографий на стену
+
+Допустимые форматы: JPG, PNG, GIF.
+Файл объемом не более 50 МБ, соотношение сторон не менее 1:20
+
+```go
+photosPhoto, err = vk.UploadWallPhoto(response.Body)
+```
+
+Загрузка фотографий в альбом для группы:
+
+```go
+photosPhoto, err = vk.UploadWallPhotoGroup(groupID, response.Body)
+```
+
+### 3. Загрузка главной фотографии пользователя или сообщества
+
+Допустимые форматы: JPG, PNG, GIF.
+Ограничения: размер не менее 200x200px, соотношение сторон от 0.25 до 3,
+сумма высоты и ширины не более 14000px, файл объемом не более 50 МБ,
+соотношение сторон не менее 1:20.
+
+Загрузка главной фотографии пользователя
+
+```go
+photosPhoto, err = vk.UploadUserPhoto(file)
+```
+
+Загрузка фотографии пользователя или сообщества с миниатюрой
+
+```go
+photosPhoto, err = vk.UploadOwnerPhoto(ownerID, squareСrop,file)
+```
+
+Для загрузки главной фотографии сообщества необходимо передать его идентификатор
+со знаком «минус» в параметре `ownerID`.
+
+Дополнительно Вы можете передать параметр `squareСrop` в формате "x,y,w" (без
+кавычек), где x и y — координаты верхнего правого угла миниатюры, а w — сторона
+квадрата. Тогда для фотографии также будет подготовлена квадратная миниатюра.
+
+Загрузка фотографии пользователя или сообщества без миниатюры:
+
+```go
+photosPhoto, err = vk.UploadOwnerPhoto(ownerID, "", file)
+```
+
+### 4. Загрузка фотографии в личное сообщение
+
+Допустимые форматы: JPG, PNG, GIF.
+Ограничения: сумма высоты и ширины не более 14000px, файл объемом
+не более 50 МБ, соотношение сторон не менее 1:20.
+
+```go
+photosPhoto, err = vk.UploadMessagesPhoto(peerID, file)
+```
+
+### 5. Загрузка главной фотографии для чата
+
+Допустимые форматы: JPG, PNG, GIF.
+Ограничения: размер не менее 200x200px, соотношение сторон от 0.25 до 3, сумма
+высоты и ширины не более 14000px, файл объемом не более 50 МБ, соотношение
+сторон не менее 1:20.
+
+Без обрезки:
+
+```go
+messageInfo, err = vk.UploadChatPhoto(peerID, file)
+```
+
+С обрезкой:
+
+```go
+messageInfo, err = vk.UploadChatPhotoCrop(peerID, cropX, cropY, cropWidth, file)
+```
+
+### 6. Загрузка фотографии для товара
+
+Допустимые форматы: JPG, PNG, GIF.
+Ограничения: минимальный размер фото — 400x400px, сумма высоты и ширины
+не более 14000px, файл объемом не более 50 МБ, соотношение сторон не менее 1:20.
+
+Если Вы хотите загрузить основную фотографию товара, необходимо передать
+параметр `mainPhoto = true`. Если фотография не основная, она не будет обрезаться.
+
+Без обрезки:
+
+```go
+photosPhoto, err = vk.UploadMarketPhoto(groupID, mainPhoto, file)
+```
+
+Основную фотографию с обрезкой:
+
+```go
+photosPhoto, err = vk.UploadMarketPhotoCrop(groupID, cropX, cropY, cropWidth, file)
+```
+
+### 7. Загрузка фотографии для подборки товаров
+
+Допустимые форматы: JPG, PNG, GIF.
+Ограничения: минимальный размер фото — 1280x720px, сумма высоты и ширины
+не более 14000px, файл объемом не более 50 МБ, соотношение сторон не менее 1:20.
+
+```go
+photosPhoto, err = vk.UploadMarketAlbumPhoto(groupID, file)
+```
+
+### 9. Загрузка видеозаписей
+
+Допустимые форматы: AVI, MP4, 3GP, MPEG, MOV, MP3, FLV, WMV.
+
+[Параметры](https://vk.com/dev/video.save)
+
+```go
+videoUploadResponse, err = vk.UploadVideo(params, file)
+```
+
+После загрузки видеозапись проходит обработку и в списке видеозаписей может
+появиться спустя некоторое время.
+
+### 10. Загрузка документов
+
+Допустимые форматы: любые форматы за исключением mp3 и исполняемых файлов.
+Ограничения: файл объемом не более 200 МБ.
+
+`title` - название файла с расширением
+
+`tags` - метки для поиска
+
+`typeDoc` - тип документа.
+
+- doc - обычный документ;
+- audio_message - голосовое сообщение
+
+Загрузить документ:
+
+```go
+docsDoc, err = vk.UploadDoc(title, tags, file)
+```
+
+Загрузить документ в группу:
+
+```go
+docsDoc, err = vk.UploadGroupDoc(groupID, title, tags, file)
+```
+
+Загрузить документ, для последующей отправки документа на стену:
+
+```go
+docsDoc, err = vk.UploadWallDoc(title, tags, file)
+```
+
+Загрузить документ в группу, для последующей отправки документа на стену:
+
+```go
+docsDoc, err = vk.UploadGroupWallDoc(groupID, title, tags, file)
+```
+
+Загрузить документ в личное сообщение:
+
+```go
+docsDoc, err = vk.UploadMessagesDoc(peerID, typeDoc, title, tags, file)
+```
+
+### 11. Загрузка обложки сообщества
+
+Допустимые форматы: JPG, PNG, GIF.
+Ограничения: минимальный размер фото — 795x200px, сумма высоты и ширины
+не более 14000px, файл объемом не более 50 МБ. Рекомендуемый размер: 1590x400px.
+В сутки можно загрузить не более 1500 обложек.
+
+Необходимо указать координаты обрезки фотографии в параметрах
+`cropX`, `cropY`, `cropX2`, `cropY2`.
+
+```go
+photo, err = vk.UploadOwnerCoverPhoto(groupID, cropX, cropY, cropX2, cropY2, file)
+```
+
+### 12. Загрузка аудиосообщения
+
+Допустимые форматы: Ogg Opus.
+Ограничения: sample rate 16kHz, variable bitrate 16 kbit/s, длительность
+не более 5 минут.
+
+```go
+docsDoc, err = vk.UploadMessagesDoc(peerID, "audio_message", title, tags, file)
+```
+
+### 13. Загрузка истории
+
+Допустимые форматы:​ JPG, PNG, GIF.
+Ограничения:​ сумма высоты и ширины не более 14000px, файл объемом
+не более 10МБ. Формат видео: h264 video, aac audio,
+максимальное разрешение 720х1280, 30fps.
+
+Загрузить историю с фотографией. [Параметры](https://vk.com/dev/stories.getPhotoUploadServer)
+
+```go
+uploadInfo, err = vk.UploadStoriesPhoto(params, file)
+```
+
+Загрузить историю с видео. [Параметры](https://vk.com/dev/stories.getVideoUploadServer)
+
+```go
+uploadInfo, err = vk.UploadStoriesVideo(params, file)
+```
+
+### Загрузка фоновой фотографии в опрос
+
+Допустимые форматы: JPG, PNG, GIF.
+Ограничения: сумма высоты и ширины не более 14000px, файл объемом не более 50 МБ,
+соотношение сторон не менее 1:20.
+
+```go
+photosPhoto, err = vk.UploadPollsPhoto(file)
+```
+
+```go
+photosPhoto, err = vk.UploadOwnerPollsPhoto(ownerID, file)
+```
+
+Для загрузки фотографии сообщества необходимо передать его идентификатор со
+знаком «минус» в параметре `ownerID`.
+
+### Загрузка фотографии для карточки
+
+Для карточек используются квадратные изображения минимальным размером 400х400.
+В случае загрузки неквадратного изображения, оно будет обрезано до квадратного.
+Допустимые форматы: JPG, PNG, BMP, TIFF или GIF.
+Ограничения: файл объемом не более 5 МБ.
+
+```go
+photo, err = vk.UploadPrettyCardsPhoto(file)
+```
+
+### Загрузка обложки для формы
+
+Для форм сбора заявок используются прямоугольные изображения размером 1200х300.
+В случае загрузки изображения другого размера, оно будет автоматически обрезано
+до требуемого.
+Допустимые форматы: JPG, PNG, BMP, TIFF или GIF.
+Ограничения: файл объемом не более 5 МБ.
+
+```go
+photo, err = vk.UploadLeadFormsPhoto(file)
+```
+
+Полученные данные можно использовать в методах
+[leadForms.create](https://vk.com/dev/leadForms.create)
+[leadForms.edit](https://vk.com/dev/leadForms.edit).
+
+Полученные данные можно использовать в методах
+[prettyCards.create](https://vk.com/dev/prettyCards.create)
+[prettyCards.edit](https://vk.com/dev/prettyCards.edit).
+
+### Загрузки фотографии в коллекцию приложения для виджетов приложений сообществ
+
+`imageType` (string) - тип изображения.
+
+Возможные значения:
+
+- 24x24
+- 50x50
+- 160x160
+- 160x240
+- 510x128
+
+```go
+image, err = vk.UploadAppImage(imageType, file)
+```
+
+### Загрузки фотографии в коллекцию сообщества для виджетов приложений сообществ
+
+`imageType` (string) - тип изображения.
+
+Возможные значения:
+
+- 24x24
+- 50x50
+- 160x160
+- 160x240
+- 510x128
+
+```go
+image, err = vk.UploadGroupAppImage(imageType, file)
+```
+
+#### Примеры
+
+Загрузка фотографии в альбом:
+
+```go
+response, err := os.Open("photo.jpeg")
+if err != nil {
+ log.Fatal(err)
+}
+defer response.Body.Close()
+
+photo, err = vk.UploadPhoto(albumID, response.Body)
+if err != nil {
+ log.Fatal(err)
+}
+```
+
+Загрузка фотографии в альбом из интернета:
+
+```go
+response, err := http.Get("https://sun9-45.userapi.com/c638629/v638629852/2afba/o-dvykjSIB4.jpg")
+if err != nil {
+ log.Fatal(err)
+}
+defer response.Body.Close()
+
+photo, err = vk.UploadPhoto(albumID, response.Body)
+if err != nil {
+ log.Fatal(err)
+}
+```
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/account.go b/vendor/github.com/SevereCloud/vksdk/v2/api/account.go
new file mode 100644
index 00000000..7e38ce2b
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/account.go
@@ -0,0 +1,196 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// AccountBan account.ban.
+//
+// https://vk.com/dev/account.ban
+func (vk *VK) AccountBan(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("account.ban", &response, params)
+ return
+}
+
+// AccountChangePasswordResponse struct.
+type AccountChangePasswordResponse struct {
+ Token string `json:"token"`
+}
+
+// AccountChangePassword changes a user password after access is successfully restored with the auth.restore method.
+//
+// https://vk.com/dev/account.changePassword
+func (vk *VK) AccountChangePassword(params Params) (response AccountChangePasswordResponse, err error) {
+ err = vk.RequestUnmarshal("account.changePassword", &response, params)
+ return
+}
+
+// AccountGetActiveOffersResponse struct.
+type AccountGetActiveOffersResponse struct {
+ Count int `json:"count"`
+ Items []object.AccountOffer `json:"items"`
+}
+
+// AccountGetActiveOffers returns a list of active ads (offers).
+// If the user fulfill their conditions, he will be able to get
+// the appropriate number of votes to his balance.
+//
+// https://vk.com/dev/account.getActiveOffers
+func (vk *VK) AccountGetActiveOffers(params Params) (response AccountGetActiveOffersResponse, err error) {
+ err = vk.RequestUnmarshal("account.getActiveOffers", &response, params)
+ return
+}
+
+// AccountGetAppPermissions gets settings of the user in this application.
+//
+// https://vk.com/dev/account.getAppPermissions
+func (vk *VK) AccountGetAppPermissions(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("account.getAppPermissions", &response, params)
+ return
+}
+
+// AccountGetBannedResponse struct.
+type AccountGetBannedResponse struct {
+ Count int `json:"count"`
+ Items []int `json:"items"`
+ object.ExtendedResponse
+}
+
+// AccountGetBanned returns a user's blacklist.
+//
+// https://vk.com/dev/account.getBanned
+func (vk *VK) AccountGetBanned(params Params) (response AccountGetBannedResponse, err error) {
+ err = vk.RequestUnmarshal("account.getBanned", &response, params)
+ return
+}
+
+// AccountGetCountersResponse struct.
+type AccountGetCountersResponse object.AccountAccountCounters
+
+// AccountGetCounters returns non-null values of user counters.
+//
+// https://vk.com/dev/account.getCounters
+func (vk *VK) AccountGetCounters(params Params) (response AccountGetCountersResponse, err error) {
+ err = vk.RequestUnmarshal("account.getCounters", &response, params)
+ return
+}
+
+// AccountGetInfoResponse struct.
+type AccountGetInfoResponse object.AccountInfo
+
+// AccountGetInfo returns current account info.
+//
+// https://vk.com/dev/account.getInfo
+func (vk *VK) AccountGetInfo(params Params) (response AccountGetInfoResponse, err error) {
+ err = vk.RequestUnmarshal("account.getInfo", &response, params)
+ return
+}
+
+// AccountGetProfileInfoResponse struct.
+type AccountGetProfileInfoResponse object.AccountUserSettings
+
+// AccountGetProfileInfo returns the current account info.
+//
+// https://vk.com/dev/account.getProfileInfo
+func (vk *VK) AccountGetProfileInfo(params Params) (response AccountGetProfileInfoResponse, err error) {
+ err = vk.RequestUnmarshal("account.getProfileInfo", &response, params)
+ return
+}
+
+// AccountGetPushSettingsResponse struct.
+type AccountGetPushSettingsResponse object.AccountPushSettings
+
+// AccountGetPushSettings account.getPushSettings Gets settings of push notifications.
+//
+// https://vk.com/dev/account.getPushSettings
+func (vk *VK) AccountGetPushSettings(params Params) (response AccountGetPushSettingsResponse, err error) {
+ err = vk.RequestUnmarshal("account.getPushSettings", &response, params)
+ return
+}
+
+// AccountRegisterDevice subscribes an iOS/Android/Windows/Mac based device to receive push notifications.
+//
+// https://vk.com/dev/account.registerDevice
+func (vk *VK) AccountRegisterDevice(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("account.registerDevice", &response, params)
+ return
+}
+
+// AccountSaveProfileInfoResponse struct.
+type AccountSaveProfileInfoResponse struct {
+ Changed object.BaseBoolInt `json:"changed"`
+ NameRequest object.AccountNameRequest `json:"name_request"`
+}
+
+// AccountSaveProfileInfo edits current profile info.
+//
+// https://vk.com/dev/account.saveProfileInfo
+func (vk *VK) AccountSaveProfileInfo(params Params) (response AccountSaveProfileInfoResponse, err error) {
+ err = vk.RequestUnmarshal("account.saveProfileInfo", &response, params)
+ return
+}
+
+// AccountSetInfo allows to edit the current account info.
+//
+// https://vk.com/dev/account.setInfo
+func (vk *VK) AccountSetInfo(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("account.setInfo", &response, params)
+ return
+}
+
+// AccountSetNameInMenu sets an application screen name
+// (up to 17 characters), that is shown to the user in the left menu.
+//
+// https://vk.com/dev/account.setNameInMenu
+func (vk *VK) AccountSetNameInMenu(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("account.setNameInMenu", &response, params)
+ return
+}
+
+// AccountSetOffline marks a current user as offline.
+//
+// https://vk.com/dev/account.setOffline
+func (vk *VK) AccountSetOffline(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("account.setOffline", &response, params)
+ return
+}
+
+// AccountSetOnline marks the current user as online for 5 minutes.
+//
+// https://vk.com/dev/account.setOnline
+func (vk *VK) AccountSetOnline(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("account.setOnline", &response, params)
+ return
+}
+
+// AccountSetPushSettings change push settings.
+//
+// https://vk.com/dev/account.setPushSettings
+func (vk *VK) AccountSetPushSettings(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("account.setPushSettings", &response, params)
+ return
+}
+
+// AccountSetSilenceMode mutes push notifications for the set period of time.
+//
+// https://vk.com/dev/account.setSilenceMode
+func (vk *VK) AccountSetSilenceMode(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("account.setSilenceMode", &response, params)
+ return
+}
+
+// AccountUnban account.unban.
+//
+// https://vk.com/dev/account.unban
+func (vk *VK) AccountUnban(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("account.unban", &response, params)
+ return
+}
+
+// AccountUnregisterDevice unsubscribes a device from push notifications.
+//
+// https://vk.com/dev/account.unregisterDevice
+func (vk *VK) AccountUnregisterDevice(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("account.unregisterDevice", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/ads.go b/vendor/github.com/SevereCloud/vksdk/v2/api/ads.go
new file mode 100644
index 00000000..529e1be4
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/ads.go
@@ -0,0 +1,581 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "encoding/json"
+
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// AdsAddOfficeUsersItem struct.
+type AdsAddOfficeUsersItem struct {
+ OK object.BaseBoolInt
+ Error AdsError
+}
+
+// UnmarshalJSON func.
+func (r *AdsAddOfficeUsersItem) UnmarshalJSON(data []byte) (err error) {
+ if r.OK.UnmarshalJSON(data) != nil {
+ return json.Unmarshal(data, &r.Error)
+ }
+
+ return
+}
+
+// AdsAddOfficeUsersResponse struct.
+type AdsAddOfficeUsersResponse []AdsAddOfficeUsersItem
+
+// AdsAddOfficeUsers adds managers and/or supervisors to advertising account.
+//
+// https://vk.com/dev/ads.addOfficeUsers
+func (vk *VK) AdsAddOfficeUsers(params Params) (response AdsAddOfficeUsersResponse, err error) {
+ err = vk.RequestUnmarshal("ads.addOfficeUsers", &response, params)
+ return
+}
+
+// AdsCheckLinkResponse struct.
+type AdsCheckLinkResponse struct {
+ // link status
+ Status object.AdsLinkStatus `json:"status"`
+
+ // (if status = disallowed) — description of the reason
+ Description string `json:"description,omitempty"`
+
+ // (if the end link differs from original and status = allowed) — end link.
+ RedirectURL string `json:"redirect_url,omitempty"`
+}
+
+// AdsCheckLink allows to check the ad link.
+//
+// https://vk.com/dev/ads.checkLink
+func (vk *VK) AdsCheckLink(params Params) (response AdsCheckLinkResponse, err error) {
+ err = vk.RequestUnmarshal("ads.checkLink", &response, params)
+ return
+}
+
+// AdsCreateAdsResponse struct.
+type AdsCreateAdsResponse []struct {
+ ID int `json:"id"`
+ AdsError
+}
+
+// AdsCreateAds creates ads.
+//
+// Please note! Maximum allowed number of ads created in one request is 5.
+// Minimum size of ad audience is 50 people.
+//
+// https://vk.com/dev/ads.createAds
+func (vk *VK) AdsCreateAds(params Params) (response AdsCreateAdsResponse, err error) {
+ err = vk.RequestUnmarshal("ads.createAds", &response, params)
+ return
+}
+
+// AdsCreateCampaignsResponse struct.
+type AdsCreateCampaignsResponse []struct {
+ ID int `json:"id"`
+ AdsError
+}
+
+// AdsCreateCampaigns creates advertising campaigns.
+//
+// Please note! Allowed number of campaigns created in one request is 50.
+//
+// https://vk.com/dev/ads.createCampaigns
+func (vk *VK) AdsCreateCampaigns(params Params) (response AdsCreateCampaignsResponse, err error) {
+ err = vk.RequestUnmarshal("ads.createCampaigns", &response, params)
+ return
+}
+
+// AdsCreateClientsResponse struct.
+type AdsCreateClientsResponse []struct {
+ ID int `json:"id"`
+ AdsError
+}
+
+// AdsCreateClients creates clients of an advertising agency.
+//
+// Available only for advertising agencies.
+//
+// Please note! Allowed number of clients created in one request is 50.
+//
+// https://vk.com/dev/ads.createClients
+func (vk *VK) AdsCreateClients(params Params) (response AdsCreateClientsResponse, err error) {
+ err = vk.RequestUnmarshal("ads.createClients", &response, params)
+ return
+}
+
+// AdsCreateLookalikeRequestResponse struct.
+type AdsCreateLookalikeRequestResponse struct {
+ RequestID int `json:"request_id"`
+}
+
+// AdsCreateLookalikeRequest creates a request to find a similar audience.
+//
+// https://vk.com/dev/ads.createLookalikeRequest
+func (vk *VK) AdsCreateLookalikeRequest(params Params) (response AdsCreateLookalikeRequestResponse, err error) {
+ err = vk.RequestUnmarshal("ads.createLookalikeRequest", &response, params)
+ return
+}
+
+// AdsCreateTargetGroupResponse struct.
+type AdsCreateTargetGroupResponse struct {
+ ID int `json:"id"`
+}
+
+// AdsCreateTargetGroup Creates a group to re-target ads for users who visited
+// advertiser's site (viewed information about the product, registered, etc.).
+//
+// When executed successfully this method returns user accounting code on
+// advertiser's site. You shall add this code to the site page, so users
+// registered in VK will be added to the created target group after they visit
+// this page.
+//
+// Use ads.importTargetContacts method to import existing user contacts to
+// the group.
+//
+// Please note! Maximum allowed number of groups for one advertising
+// account is 100.
+//
+// https://vk.com/dev/ads.createTargetGroup
+func (vk *VK) AdsCreateTargetGroup(params Params) (response AdsCreateTargetGroupResponse, err error) {
+ err = vk.RequestUnmarshal("ads.createTargetGroup", &response, params)
+ return
+}
+
+// AdsCreateTargetPixelResponse struct.
+type AdsCreateTargetPixelResponse struct {
+ ID int `json:"id"`
+ Pixel string `json:"pixel"`
+}
+
+// AdsCreateTargetPixel Creates retargeting pixel.
+//
+// Method returns pixel code for users accounting on the advertiser site.
+// Authorized VK users who visited the page with pixel code on it will be
+// added to retargeting audience with corresponding rules. You can also use
+// Open API, ads.importTargetContacts method and loading from file.
+//
+// Maximum pixels number per advertising account is 25.
+//
+// https://vk.com/dev/ads.createTargetPixel
+func (vk *VK) AdsCreateTargetPixel(params Params) (response AdsCreateTargetPixelResponse, err error) {
+ err = vk.RequestUnmarshal("ads.createTargetPixel", &response, params)
+ return
+}
+
+// AdsDeleteAdsResponse struct.
+//
+// Each response is 0 — deleted successfully, or an error code.
+type AdsDeleteAdsResponse []ErrorType
+
+// AdsDeleteAds archives ads.
+//
+// Warning! Maximum allowed number of ads archived in one request is 100.
+//
+// https://vk.com/dev/ads.deleteAds
+func (vk *VK) AdsDeleteAds(params Params) (response AdsDeleteAdsResponse, err error) {
+ err = vk.RequestUnmarshal("ads.deleteAds", &response, params)
+ return
+}
+
+// AdsDeleteCampaignsResponse struct.
+//
+// Each response is 0 — deleted successfully, or an error code.
+type AdsDeleteCampaignsResponse []ErrorType
+
+// AdsDeleteCampaigns archives advertising campaigns.
+//
+//
+// Warning! Maximum allowed number of campaigns archived in one request is 100.
+//
+// https://vk.com/dev/ads.deleteCampaigns
+func (vk *VK) AdsDeleteCampaigns(params Params) (response AdsDeleteCampaignsResponse, err error) {
+ err = vk.RequestUnmarshal("ads.deleteCampaigns", &response, params)
+ return
+}
+
+// AdsDeleteClientsResponse struct.
+//
+// Each response is 0 — deleted successfully, or an error code.
+type AdsDeleteClientsResponse []ErrorType
+
+// AdsDeleteClients archives clients of an advertising agency.
+//
+// Available only for advertising agencies.
+//
+// Please note! Maximum allowed number of clients edited in one request is 10.
+//
+// https://vk.com/dev/ads.deleteClients
+func (vk *VK) AdsDeleteClients(params Params) (response AdsDeleteClientsResponse, err error) {
+ err = vk.RequestUnmarshal("ads.deleteClients", &response, params)
+ return
+}
+
+// AdsDeleteTargetGroup deletes target group.
+//
+// https://vk.com/dev/ads.deleteTargetGroup
+func (vk *VK) AdsDeleteTargetGroup(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("ads.deleteTargetGroup", &response, params)
+ return
+}
+
+// AdsDeleteTargetPixel deletes target pixel.
+//
+// https://vk.com/dev/ads.deleteTargetPixel
+func (vk *VK) AdsDeleteTargetPixel(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("ads.deleteTargetPixel", &response, params)
+ return
+}
+
+// AdsGetAccountsResponse struct.
+type AdsGetAccountsResponse []object.AdsAccount
+
+// AdsGetAccounts returns a list of advertising accounts.
+//
+// https://vk.com/dev/ads.getAccounts
+func (vk *VK) AdsGetAccounts(params Params) (response AdsGetAccountsResponse, err error) {
+ err = vk.RequestUnmarshal("ads.getAccounts", &response, params)
+ return
+}
+
+// AdsGetAdsResponse struct.
+type AdsGetAdsResponse []object.AdsAd
+
+// AdsGetAds returns a list of ads.
+//
+// https://vk.com/dev/ads.getAds
+func (vk *VK) AdsGetAds(params Params) (response AdsGetAdsResponse, err error) {
+ err = vk.RequestUnmarshal("ads.getAds", &response, params)
+ return
+}
+
+// AdsGetAdsLayoutResponse struct.
+type AdsGetAdsLayoutResponse []object.AdsAdLayout
+
+// AdsGetAdsLayout returns descriptions of ad layouts.
+//
+// https://vk.com/dev/ads.getAdsLayout
+func (vk *VK) AdsGetAdsLayout(params Params) (response AdsGetAdsLayoutResponse, err error) {
+ err = vk.RequestUnmarshal("ads.getAdsLayout", &response, params)
+ return
+}
+
+// TODO: AdsGetAdsTargetingResponse struct.
+// type AdsGetAdsTargetingResponse struct{}
+
+// TODO: AdsGetAdsTargeting ...
+//
+// https://vk.com/dev/ads.getAdsTargeting
+// func (vk *VK) AdsGetAdsTargeting(params Params) (response AdsGetAdsTargetingResponse, err error) {
+// err = vk.RequestUnmarshal("ads.getAdsTargeting", &response, params)
+// return
+// }
+
+// TODO: AdsGetBudgetResponse struct.
+// type AdsGetBudgetResponse struct{}
+
+// TODO: AdsGetBudget ...
+//
+// https://vk.com/dev/ads.getBudget
+// func (vk *VK) AdsGetBudget(params Params) (response AdsGetBudgetResponse, err error) {
+// err = vk.RequestUnmarshal("ads.getBudget", &response, params)
+// return
+// }
+
+// TODO: AdsGetCampaignsResponse struct.
+// type AdsGetCampaignsResponse struct{}
+
+// TODO: AdsGetCampaigns ...
+//
+// https://vk.com/dev/ads.getCampaigns
+// func (vk *VK) AdsGetCampaigns(params Params) (response AdsGetCampaignsResponse, err error) {
+// err = vk.RequestUnmarshal("ads.getCampaigns", &response, params)
+// return
+// }
+
+// TODO: AdsGetCategoriesResponse struct.
+// type AdsGetCategoriesResponse struct{}
+
+// TODO: AdsGetCategories ...
+//
+// https://vk.com/dev/ads.getCategories
+// func (vk *VK) AdsGetCategories(params Params) (response AdsGetCategoriesResponse, err error) {
+// err = vk.RequestUnmarshal("ads.getCategories", &response, params)
+// return
+// }
+
+// TODO: AdsGetClientsResponse struct.
+// type AdsGetClientsResponse struct{}
+
+// TODO: AdsGetClients ...
+//
+// https://vk.com/dev/ads.getClients
+// func (vk *VK) AdsGetClients(params Params) (response AdsGetClientsResponse, err error) {
+// err = vk.RequestUnmarshal("ads.getClients", &response, params)
+// return
+// }
+
+// TODO: AdsGetDemographicsResponse struct.
+// type AdsGetDemographicsResponse struct{}
+
+// TODO: AdsGetDemographics ...
+//
+// https://vk.com/dev/ads.getDemographics
+// func (vk *VK) AdsGetDemographics(params Params) (response AdsGetDemographicsResponse, err error) {
+// err = vk.RequestUnmarshal("ads.getDemographics", &response, params)
+// return
+// }
+
+// TODO: AdsGetFloodStatsResponse struct.
+// type AdsGetFloodStatsResponse struct{}
+
+// TODO: AdsGetFloodStats ...
+//
+// https://vk.com/dev/ads.getFloodStats
+// func (vk *VK) AdsGetFloodStats(params Params) (response AdsGetFloodStatsResponse, err error) {
+// err = vk.RequestUnmarshal("ads.getFloodStats", &response, params)
+// return
+// }
+
+// TODO: AdsGetLookalikeRequestsResponse struct.
+// type AdsGetLookalikeRequestsResponse struct{}
+
+// TODO: AdsGetLookalikeRequests ...
+//
+// https://vk.com/dev/ads.getLookalikeRequests
+// func (vk *VK) AdsGetLookalikeRequests(params Params) (response AdsGetLookalikeRequestsResponse, err error) {
+// err = vk.RequestUnmarshal("ads.getLookalikeRequests", &response, params)
+// return
+// }
+
+// AdsGetMusiciansResponse struct.
+type AdsGetMusiciansResponse struct {
+ Items []object.BaseObjectWithName
+}
+
+// AdsGetMusicians returns a list of musicians.
+//
+// https://vk.com/dev/ads.getMusicians
+func (vk *VK) AdsGetMusicians(params Params) (response AdsGetMusiciansResponse, err error) {
+ err = vk.RequestUnmarshal("ads.getMusicians", &response, params)
+ return
+}
+
+// TODO: AdsGetOfficeUsersResponse struct.
+// type AdsGetOfficeUsersResponse struct{}
+
+// TODO: AdsGetOfficeUsers ...
+//
+// https://vk.com/dev/ads.getOfficeUsers
+// func (vk *VK) AdsGetOfficeUsers(params Params) (response AdsGetOfficeUsersResponse, err error) {
+// err = vk.RequestUnmarshal("ads.getOfficeUsers", &response, params)
+// return
+// }
+
+// TODO: AdsGetPostsReachResponse struct.
+// type AdsGetPostsReachResponse struct{}
+
+// TODO: AdsGetPostsReach ...
+//
+// https://vk.com/dev/ads.getPostsReach
+// func (vk *VK) AdsGetPostsReach(params Params) (response AdsGetPostsReachResponse, err error) {
+// err = vk.RequestUnmarshal("ads.getPostsReach", &response, params)
+// return
+// }
+
+// TODO: AdsGetRejectionReasonResponse struct.
+// type AdsGetRejectionReasonResponse struct{}
+
+// TODO: AdsGetRejectionReason ...
+//
+// https://vk.com/dev/ads.getRejectionReason
+// func (vk *VK) AdsGetRejectionReason(params Params) (response AdsGetRejectionReasonResponse, err error) {
+// err = vk.RequestUnmarshal("ads.getRejectionReason", &response, params)
+// return
+// }
+
+// TODO: AdsGetStatisticsResponse struct.
+// type AdsGetStatisticsResponse struct{}
+
+// TODO: AdsGetStatistics ...
+//
+// https://vk.com/dev/ads.getStatistics
+// func (vk *VK) AdsGetStatistics(params Params) (response AdsGetStatisticsResponse, err error) {
+// err = vk.RequestUnmarshal("ads.getStatistics", &response, params)
+// return
+// }
+
+// TODO: AdsGetSuggestionsResponse struct.
+// type AdsGetSuggestionsResponse struct{}
+
+// TODO: AdsGetSuggestions ...
+//
+// https://vk.com/dev/ads.getSuggestions
+// func (vk *VK) AdsGetSuggestions(params Params) (response AdsGetSuggestionsResponse, err error) {
+// err = vk.RequestUnmarshal("ads.getSuggestions", &response, params)
+// return
+// }
+
+// AdsGetTargetGroupsResponse struct.
+type AdsGetTargetGroupsResponse []object.AdsTargetGroup
+
+// AdsGetTargetGroups returns a list of target groups.
+//
+// https://vk.com/dev/ads.getTargetGroups
+func (vk *VK) AdsGetTargetGroups(params Params) (response AdsGetTargetGroupsResponse, err error) {
+ err = vk.RequestUnmarshal("ads.getTargetGroups", &response, params)
+ return
+}
+
+// TODO: AdsGetTargetPixelsResponse struct.
+// type AdsGetTargetPixelsResponse struct{}
+
+// TODO: AdsGetTargetPixels ...
+//
+// https://vk.com/dev/ads.getTargetPixels
+// func (vk *VK) AdsGetTargetPixels(params Params) (response AdsGetTargetPixelsResponse, err error) {
+// err = vk.RequestUnmarshal("ads.getTargetPixels", &response, params)
+// return
+// }
+
+// TODO: AdsGetTargetingStatsResponse struct.
+// type AdsGetTargetingStatsResponse struct{}
+
+// TODO: AdsGetTargetingStats ...
+//
+// https://vk.com/dev/ads.getTargetingStats
+// func (vk *VK) AdsGetTargetingStats(params Params) (response AdsGetTargetingStatsResponse, err error) {
+// err = vk.RequestUnmarshal("ads.getTargetingStats", &response, params)
+// return
+// }
+
+// TODO: AdsGetUploadURLResponse struct.
+// type AdsGetUploadURLResponse struct{}
+
+// TODO: AdsGetUploadURL ...
+//
+// https://vk.com/dev/ads.getUploadURL
+// func (vk *VK) AdsGetUploadURL(params Params) (response AdsGetUploadURLResponse, err error) {
+// err = vk.RequestUnmarshal("ads.getUploadURL", &response, params)
+// return
+// }
+
+// TODO: AdsGetVideoUploadURLResponse struct.
+// type AdsGetVideoUploadURLResponse struct{}
+
+// TODO: AdsGetVideoUploadURL ...
+//
+// https://vk.com/dev/ads.getVideoUploadURL
+// func (vk *VK) AdsGetVideoUploadURL(params Params) (response AdsGetVideoUploadURLResponse, err error) {
+// err = vk.RequestUnmarshal("ads.getVideoUploadURL", &response, params)
+// return
+// }
+
+// TODO: AdsImportTargetContactsResponse struct.
+// type AdsImportTargetContactsResponse struct{}
+
+// TODO: AdsImportTargetContacts ...
+//
+// https://vk.com/dev/ads.importTargetContacts
+// func (vk *VK) AdsImportTargetContacts(params Params) (response AdsImportTargetContactsResponse, err error) {
+// err = vk.RequestUnmarshal("ads.importTargetContacts", &response, params)
+// return
+// }
+
+// TODO: AdsRemoveOfficeUsersResponse struct.
+// type AdsRemoveOfficeUsersResponse struct{}
+
+// TODO: AdsRemoveOfficeUsers ...
+//
+// https://vk.com/dev/ads.removeOfficeUsers
+// func (vk *VK) AdsRemoveOfficeUsers(params Params) (response AdsRemoveOfficeUsersResponse, err error) {
+// err = vk.RequestUnmarshal("ads.removeOfficeUsers", &response, params)
+// return
+// }
+
+// AdsRemoveTargetContacts accepts the request to exclude the advertiser's
+// contacts from the retargeting audience.
+//
+// The maximum allowed number of contacts to be excluded by a single
+// request is 1000.
+//
+// Contacts are excluded within a few hours of the request.
+//
+// https://vk.com/dev/ads.removeTargetContacts
+func (vk *VK) AdsRemoveTargetContacts(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("ads.removeTargetContacts", &response, params)
+ return
+}
+
+// TODO: AdsSaveLookalikeRequestResultResponse struct.
+// type AdsSaveLookalikeRequestResultResponse struct{}
+
+// TODO: AdsSaveLookalikeRequestResult ...
+//
+// https://vk.com/dev/ads.saveLookalikeRequestResult
+// func (vk *VK) AdsSaveLookalikeRequestResult(params Params) (
+// response AdsSaveLookalikeRequestResultResponse,
+// err error,
+// ) {
+// err = vk.RequestUnmarshal("ads.saveLookalikeRequestResult", &response, params)
+// return
+// }
+
+// TODO: AdsShareTargetGroupResponse struct.
+// type AdsShareTargetGroupResponse struct{}
+
+// TODO: AdsShareTargetGroup ...
+//
+// https://vk.com/dev/ads.shareTargetGroup
+// func (vk *VK) AdsShareTargetGroup(params Params) (response AdsShareTargetGroupResponse, err error) {
+// err = vk.RequestUnmarshal("ads.shareTargetGroup", &response, params)
+// return
+// }
+
+// TODO: AdsUpdateAdsResponse struct.
+// type AdsUpdateAdsResponse struct{}
+
+// TODO: AdsUpdateAds ...
+//
+// https://vk.com/dev/ads.updateAds
+// func (vk *VK) AdsUpdateAds(params Params) (response AdsUpdateAdsResponse, err error) {
+// err = vk.RequestUnmarshal("ads.updateAds", &response, params)
+// return
+// }
+
+// TODO: AdsUpdateCampaignsResponse struct.
+// type AdsUpdateCampaignsResponse struct{}
+
+// TODO: AdsUpdateCampaigns ...
+//
+// https://vk.com/dev/ads.updateCampaigns
+// func (vk *VK) AdsUpdateCampaigns(params Params) (response AdsUpdateCampaignsResponse, err error) {
+// err = vk.RequestUnmarshal("ads.updateCampaigns", &response, params)
+// return
+// }
+
+// TODO: AdsUpdateClientsResponse struct.
+// type AdsUpdateClientsResponse struct{}
+
+// TODO: AdsUpdateClients ...
+//
+// https://vk.com/dev/ads.updateClients
+// func (vk *VK) AdsUpdateClients(params Params) (response AdsUpdateClientsResponse, err error) {
+// err = vk.RequestUnmarshal("ads.updateClients", &response, params)
+// return
+// }
+
+// AdsUpdateTargetGroup edits target group.
+//
+// https://vk.com/dev/ads.updateTargetGroup
+func (vk *VK) AdsUpdateTargetGroup(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("ads.updateTargetGroup", &response, params)
+ return
+}
+
+// AdsUpdateTargetPixel edits target pixel.
+//
+// https://vk.com/dev/ads.updateTargetPixel
+func (vk *VK) AdsUpdateTargetPixel(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("ads. updateTargetPixel", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/api.go b/vendor/github.com/SevereCloud/vksdk/v2/api/api.go
new file mode 100644
index 00000000..56da7784
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/api.go
@@ -0,0 +1,359 @@
+/*
+Package api implements VK API.
+
+See more https://vk.com/dev/api_requests
+*/
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "bytes"
+ "context"
+ "encoding/json"
+ "fmt"
+ "mime"
+ "net/http"
+ "net/url"
+ "reflect"
+ "sync"
+ "sync/atomic"
+ "time"
+
+ "github.com/SevereCloud/vksdk/v2"
+ "github.com/SevereCloud/vksdk/v2/internal"
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// Api constants.
+const (
+ Version = vksdk.API
+ MethodURL = "https://api.vk.com/method/"
+)
+
+// VKontakte API methods (except for methods from secure and ads sections)
+// with user access key or service access key can be accessed
+// no more than 3 times per second. The community access key is limited
+// to 20 requests per second.
+//
+// Maximum amount of calls to the secure section methods depends
+// on the app's users amount. If an app has less than
+// 10 000 users, 5 requests per second,
+// up to 100 000 – 8 requests,
+// up to 1 000 000 – 20 requests,
+// 1 000 000+ – 35 requests.
+//
+// The ads section methods are subject to their own limitations,
+// you can read them on this page - https://vk.com/dev/ads_limits
+//
+// If one of this limits is exceeded, the server will return following error:
+// "Too many requests per second". (errors.TooMany).
+//
+// If your app's logic implies many requests in a row, check the execute method.
+// It allows for up to 25 requests for different methods in a single request.
+//
+// In addition to restrictions on the frequency of calls, there are also
+// quantitative restrictions on calling the same type of methods.
+//
+// After exceeding the quantitative limit, access to a particular method may
+// require entering a captcha (see https://vk.com/dev/captcha_error),
+// and may also be temporarily restricted (in this case, the server does
+// not return a response to the call of a particular method, but handles
+// any other requests without problems).
+//
+// If this error occurs, the following parameters are also passed in
+// the error message:
+//
+// CaptchaSID - identifier captcha.
+//
+// CaptchaImg - a link to the image that you want to show the user
+// to enter text from that image.
+//
+// In this case, you should ask the user to enter text from
+// the CaptchaImg image and repeat the request by adding parameters to it:
+//
+// captcha_sid - the obtained identifier;
+//
+// captcha_key - text entered by the user.
+//
+// More info: https://vk.com/dev/api_requests
+const (
+ LimitUserToken = 3
+ LimitGroupToken = 20
+)
+
+// VK struct.
+type VK struct {
+ accessTokens []string
+ lastToken uint32
+ MethodURL string
+ Version string
+ Client *http.Client
+ Limit int
+ UserAgent string
+ Handler func(method string, params ...Params) (Response, error)
+
+ mux sync.Mutex
+ lastTime time.Time
+ rps int
+}
+
+// Response struct.
+type Response struct {
+ Response json.RawMessage `json:"response"`
+ Error Error `json:"error"`
+ ExecuteErrors ExecuteErrors `json:"execute_errors"`
+}
+
+// NewVK returns a new VK.
+//
+// The VKSDK will use the http.DefaultClient.
+// This means that if the http.DefaultClient is modified by other components
+// of your application the modifications will be picked up by the SDK as well.
+//
+// In some cases this might be intended, but it is a better practice
+// to create a custom HTTP Client to share explicitly through
+// your application. You can configure the VKSDK to use the custom
+// HTTP Client by setting the VK.Client value.
+//
+// This set limit 20 requests per second for one token.
+func NewVK(tokens ...string) *VK {
+ var vk VK
+
+ vk.accessTokens = tokens
+ vk.Version = Version
+
+ vk.Handler = vk.defaultHandler
+
+ vk.MethodURL = MethodURL
+ vk.Client = http.DefaultClient
+ vk.Limit = LimitGroupToken
+ vk.UserAgent = internal.UserAgent
+
+ return &vk
+}
+
+// getToken return next token (simple round-robin).
+func (vk *VK) getToken() string {
+ i := atomic.AddUint32(&vk.lastToken, 1)
+ return vk.accessTokens[(int(i)-1)%len(vk.accessTokens)]
+}
+
+// Params type.
+type Params map[string]interface{}
+
+// Lang - determines the language for the data to be displayed on. For
+// example country and city names. If you use a non-cyrillic language,
+// cyrillic symbols will be transliterated automatically.
+// Numeric format from account.getInfo is supported as well.
+//
+// p.Lang(object.LangRU)
+//
+// See all language code in module object.
+func (p Params) Lang(v int) Params {
+ p["lang"] = v
+ return p
+}
+
+// TestMode allows to send requests from a native app without switching it on
+// for all users.
+func (p Params) TestMode(v bool) Params {
+ p["test_mode"] = v
+ return p
+}
+
+// CaptchaSID received ID.
+//
+// See https://vk.com/dev/captcha_error
+func (p Params) CaptchaSID(v string) Params {
+ p["captcha_sid"] = v
+ return p
+}
+
+// CaptchaKey text input.
+//
+// See https://vk.com/dev/captcha_error
+func (p Params) CaptchaKey(v string) Params {
+ p["captcha_key"] = v
+ return p
+}
+
+// Confirm parameter.
+//
+// See https://vk.com/dev/need_confirmation
+func (p Params) Confirm(v bool) Params {
+ p["confirm"] = v
+ return p
+}
+
+// WithContext parameter.
+func (p Params) WithContext(ctx context.Context) Params {
+ p[":context"] = ctx
+ return p
+}
+
+func buildQuery(sliceParams ...Params) (context.Context, url.Values) {
+ query := url.Values{}
+ ctx := context.Background()
+
+ for _, params := range sliceParams {
+ for key, value := range params {
+ if key != ":context" {
+ query.Set(key, FmtValue(value, 0))
+ } else {
+ ctx = value.(context.Context)
+ }
+ }
+ }
+
+ return ctx, query
+}
+
+// defaultHandler provides access to VK API methods.
+func (vk *VK) defaultHandler(method string, sliceParams ...Params) (Response, error) {
+ u := vk.MethodURL + method
+ ctx, query := buildQuery(sliceParams...)
+ attempt := 0
+
+ for {
+ var response Response
+
+ attempt++
+
+ // Rate limiting
+ if vk.Limit > 0 {
+ vk.mux.Lock()
+
+ sleepTime := time.Second - time.Since(vk.lastTime)
+ if sleepTime < 0 {
+ vk.lastTime = time.Now()
+ vk.rps = 0
+ } else if vk.rps == vk.Limit*len(vk.accessTokens) {
+ time.Sleep(sleepTime)
+ vk.lastTime = time.Now()
+ vk.rps = 0
+ }
+ vk.rps++
+
+ vk.mux.Unlock()
+ }
+
+ rawBody := bytes.NewBufferString(query.Encode())
+
+ req, err := http.NewRequestWithContext(ctx, "POST", u, rawBody)
+ if err != nil {
+ return response, err
+ }
+
+ req.Header.Set("User-Agent", vk.UserAgent)
+ req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
+
+ resp, err := vk.Client.Do(req)
+ if err != nil {
+ return response, err
+ }
+
+ mediatype, _, _ := mime.ParseMediaType(resp.Header.Get("Content-Type"))
+ if mediatype != "application/json" {
+ _ = resp.Body.Close()
+ return response, &InvalidContentType{mediatype}
+ }
+
+ err = json.NewDecoder(resp.Body).Decode(&response)
+ if err != nil {
+ _ = resp.Body.Close()
+ return response, err
+ }
+
+ _ = resp.Body.Close()
+
+ switch response.Error.Code {
+ case ErrNoType:
+ return response, nil
+ case ErrTooMany:
+ if attempt < vk.Limit {
+ continue
+ }
+
+ return response, &response.Error
+ }
+
+ return response, &response.Error
+ }
+}
+
+// Request provides access to VK API methods.
+func (vk *VK) Request(method string, sliceParams ...Params) ([]byte, error) {
+ token := vk.getToken()
+
+ reqParams := Params{
+ "access_token": token,
+ "v": vk.Version,
+ }
+
+ sliceParams = append(sliceParams, reqParams)
+
+ resp, err := vk.Handler(method, sliceParams...)
+
+ return resp.Response, err
+}
+
+// RequestUnmarshal provides access to VK API methods.
+func (vk *VK) RequestUnmarshal(method string, obj interface{}, sliceParams ...Params) error {
+ rawResponse, err := vk.Request(method, sliceParams...)
+ if err != nil {
+ return err
+ }
+
+ return json.Unmarshal(rawResponse, &obj)
+}
+
+func fmtReflectValue(value reflect.Value, depth int) string {
+ switch f := value; value.Kind() {
+ case reflect.Invalid:
+ return ""
+ case reflect.Bool:
+ return fmtBool(f.Bool())
+ case reflect.Array, reflect.Slice:
+ s := ""
+
+ for i := 0; i < f.Len(); i++ {
+ if i > 0 {
+ s += ","
+ }
+
+ s += FmtValue(f.Index(i).Interface(), depth)
+ }
+
+ return s
+ case reflect.Ptr:
+ // pointer to array or slice or struct? ok at top level
+ // but not embedded (avoid loops)
+ if depth == 0 && f.Pointer() != 0 {
+ switch a := f.Elem(); a.Kind() {
+ case reflect.Array, reflect.Slice, reflect.Struct, reflect.Map:
+ return FmtValue(a.Interface(), depth+1)
+ }
+ }
+ }
+
+ return fmt.Sprint(value)
+}
+
+// FmtValue return vk format string.
+func FmtValue(value interface{}, depth int) string {
+ if value == nil {
+ return ""
+ }
+
+ switch f := value.(type) {
+ case bool:
+ return fmtBool(f)
+ case object.Attachment:
+ return f.ToAttachment()
+ case object.JSONObject:
+ return f.ToJSON()
+ case reflect.Value:
+ return fmtReflectValue(f, depth)
+ }
+
+ return fmtReflectValue(reflect.ValueOf(value), depth)
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/apps.go b/vendor/github.com/SevereCloud/vksdk/v2/api/apps.go
new file mode 100644
index 00000000..892ee607
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/apps.go
@@ -0,0 +1,149 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// AppsDeleteAppRequests deletes all request notifications from the current app.
+//
+// https://vk.com/dev/apps.deleteAppRequests
+func (vk *VK) AppsDeleteAppRequests(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("apps.deleteAppRequests", &response, params)
+ return
+}
+
+// AppsGetResponse struct.
+type AppsGetResponse struct {
+ Count int `json:"count"`
+ Items []object.AppsApp `json:"items"`
+ object.ExtendedResponse
+}
+
+// AppsGet returns applications data.
+//
+// https://vk.com/dev/apps.get
+func (vk *VK) AppsGet(params Params) (response AppsGetResponse, err error) {
+ err = vk.RequestUnmarshal("apps.get", &response, params)
+ return
+}
+
+// AppsGetCatalogResponse struct.
+type AppsGetCatalogResponse struct {
+ Count int `json:"count"`
+ Items []object.AppsApp `json:"items"`
+ object.ExtendedResponse
+}
+
+// AppsGetCatalog returns a list of applications (apps) available to users in the App Catalog.
+//
+// https://vk.com/dev/apps.getCatalog
+func (vk *VK) AppsGetCatalog(params Params) (response AppsGetCatalogResponse, err error) {
+ err = vk.RequestUnmarshal("apps.getCatalog", &response, params)
+ return
+}
+
+// AppsGetFriendsListResponse struct.
+type AppsGetFriendsListResponse struct {
+ Count int `json:"count"`
+ Items []int `json:"items"`
+}
+
+// AppsGetFriendsList creates friends list for requests and invites in current app.
+//
+// extended=0
+//
+// https://vk.com/dev/apps.getFriendsList
+func (vk *VK) AppsGetFriendsList(params Params) (response AppsGetFriendsListResponse, err error) {
+ err = vk.RequestUnmarshal("apps.getFriendsList", &response, params, Params{"extended": false})
+
+ return
+}
+
+// AppsGetFriendsListExtendedResponse struct.
+type AppsGetFriendsListExtendedResponse struct {
+ Count int `json:"count"`
+ Items []object.UsersUser `json:"items"`
+}
+
+// AppsGetFriendsListExtended creates friends list for requests and invites in current app.
+//
+// extended=1
+//
+// https://vk.com/dev/apps.getFriendsList
+func (vk *VK) AppsGetFriendsListExtended(params Params) (response AppsGetFriendsListExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("apps.getFriendsList", &response, params, Params{"extended": true})
+
+ return
+}
+
+// AppsGetLeaderboardResponse struct.
+type AppsGetLeaderboardResponse struct {
+ Count int `json:"count"`
+ Items []object.AppsLeaderboard `json:"items"`
+}
+
+// AppsGetLeaderboard returns players rating in the game.
+//
+// extended=0
+//
+// https://vk.com/dev/apps.getLeaderboard
+func (vk *VK) AppsGetLeaderboard(params Params) (response AppsGetLeaderboardResponse, err error) {
+ err = vk.RequestUnmarshal("apps.getLeaderboard", &response, params, Params{"extended": false})
+
+ return
+}
+
+// AppsGetLeaderboardExtendedResponse struct.
+type AppsGetLeaderboardExtendedResponse struct {
+ Count int `json:"count"`
+ Items []struct {
+ Score int `json:"score"`
+ UserID int `json:"user_id"`
+ } `json:"items"`
+ Profiles []object.UsersUser `json:"profiles"`
+}
+
+// AppsGetLeaderboardExtended returns players rating in the game.
+//
+// extended=1
+//
+// https://vk.com/dev/apps.getLeaderboard
+func (vk *VK) AppsGetLeaderboardExtended(params Params) (response AppsGetLeaderboardExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("apps.getLeaderboard", &response, params, Params{"extended": true})
+
+ return
+}
+
+// AppsGetScopesResponse struct.
+type AppsGetScopesResponse struct {
+ Count int `json:"count"`
+ Items []object.AppsScope `json:"items"`
+}
+
+// AppsGetScopes ...
+//
+// TODO: write docs.
+//
+// https://vk.com/dev/apps.getScopes
+func (vk *VK) AppsGetScopes(params Params) (response AppsGetScopesResponse, err error) {
+ err = vk.RequestUnmarshal("apps.getScopes", &response, params)
+ return
+}
+
+// AppsGetScore returns user score in app.
+//
+// NOTE: vk wtf!?
+//
+// https://vk.com/dev/apps.getScore
+func (vk *VK) AppsGetScore(params Params) (response string, err error) {
+ err = vk.RequestUnmarshal("apps.getScore", &response, params)
+ return
+}
+
+// AppsSendRequest sends a request to another user in an app that uses VK authorization.
+//
+// https://vk.com/dev/apps.sendRequest
+func (vk *VK) AppsSendRequest(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("apps.sendRequest", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/appwidgets.go b/vendor/github.com/SevereCloud/vksdk/v2/api/appwidgets.go
new file mode 100644
index 00000000..5500d0e2
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/appwidgets.go
@@ -0,0 +1,100 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// AppWidgetsGetAppImageUploadServerResponse struct.
+type AppWidgetsGetAppImageUploadServerResponse struct {
+ UploadURL string `json:"upload_url"`
+}
+
+// AppWidgetsGetAppImageUploadServer returns a URL for uploading a
+// photo to the app collection for community app widgets.
+//
+// https://vk.com/dev/appWidgets.getAppImageUploadServer
+func (vk *VK) AppWidgetsGetAppImageUploadServer(params Params) (
+ response AppWidgetsGetAppImageUploadServerResponse,
+ err error,
+) {
+ err = vk.RequestUnmarshal("appWidgets.getAppImageUploadServer", &response, params)
+ return
+}
+
+// AppWidgetsGetAppImagesResponse struct.
+type AppWidgetsGetAppImagesResponse struct {
+ Count int `json:"count"`
+ Items []object.AppWidgetsImage `json:"items"`
+}
+
+// AppWidgetsGetAppImages returns an app collection of images for community app widgets.
+//
+// https://vk.com/dev/appWidgets.getAppImages
+func (vk *VK) AppWidgetsGetAppImages(params Params) (response AppWidgetsGetAppImagesResponse, err error) {
+ err = vk.RequestUnmarshal("appWidgets.getAppImages", &response, params)
+ return
+}
+
+// AppWidgetsGetGroupImageUploadServerResponse struct.
+type AppWidgetsGetGroupImageUploadServerResponse struct {
+ UploadURL string `json:"upload_url"`
+}
+
+// AppWidgetsGetGroupImageUploadServer returns a URL for uploading
+// a photo to the community collection for community app widgets.
+//
+// https://vk.com/dev/appWidgets.getGroupImageUploadServer
+func (vk *VK) AppWidgetsGetGroupImageUploadServer(params Params) (
+ response AppWidgetsGetGroupImageUploadServerResponse,
+ err error,
+) {
+ err = vk.RequestUnmarshal("appWidgets.getGroupImageUploadServer", &response, params)
+ return
+}
+
+// AppWidgetsGetGroupImagesResponse struct.
+type AppWidgetsGetGroupImagesResponse struct {
+ Count int `json:"count"`
+ Items []object.AppWidgetsImage `json:"items"`
+}
+
+// AppWidgetsGetGroupImages returns a community collection of images for community app widgets.
+//
+// https://vk.com/dev/appWidgets.getGroupImages
+func (vk *VK) AppWidgetsGetGroupImages(params Params) (response AppWidgetsGetGroupImagesResponse, err error) {
+ err = vk.RequestUnmarshal("appWidgets.getGroupImages", &response, params)
+ return
+}
+
+// AppWidgetsGetImagesByID returns an image for community app widgets by its ID.
+//
+// https://vk.com/dev/appWidgets.getImagesById
+func (vk *VK) AppWidgetsGetImagesByID(params Params) (response object.AppWidgetsImage, err error) {
+ err = vk.RequestUnmarshal("appWidgets.getImagesById", &response, params)
+ return
+}
+
+// AppWidgetsSaveAppImage allows to save image into app collection for community app widgets.
+//
+// https://vk.com/dev/appWidgets.saveAppImage
+func (vk *VK) AppWidgetsSaveAppImage(params Params) (response object.AppWidgetsImage, err error) {
+ err = vk.RequestUnmarshal("appWidgets.saveAppImage", &response, params)
+ return
+}
+
+// AppWidgetsSaveGroupImage allows to save image into community collection for community app widgets.
+//
+// https://vk.com/dev/appWidgets.saveGroupImage
+func (vk *VK) AppWidgetsSaveGroupImage(params Params) (response object.AppWidgetsImage, err error) {
+ err = vk.RequestUnmarshal("appWidgets.saveGroupImage", &response, params)
+ return
+}
+
+// AppWidgetsUpdate allows to update community app widget.
+//
+// https://vk.com/dev/appWidgets.update
+func (vk *VK) AppWidgetsUpdate(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("appWidgets.update", &response, params)
+
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/auth.go b/vendor/github.com/SevereCloud/vksdk/v2/api/auth.go
new file mode 100644
index 00000000..f927a6ff
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/auth.go
@@ -0,0 +1,26 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+// AuthCheckPhone checks a user's phone number for correctness.
+//
+// https://vk.com/dev/auth.checkPhone
+//
+// Deprecated: This method is deprecated and may be disabled soon, please avoid
+// using it.
+func (vk *VK) AuthCheckPhone(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("auth.checkPhone", &response, params)
+ return
+}
+
+// AuthRestoreResponse struct.
+type AuthRestoreResponse struct {
+ Success int `json:"success"`
+ SID string `json:"sid"`
+}
+
+// AuthRestore allows to restore account access using a code received via SMS.
+//
+// https://vk.com/dev/auth.restore
+func (vk *VK) AuthRestore(params Params) (response AuthRestoreResponse, err error) {
+ err = vk.RequestUnmarshal("auth.restore", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/board.go b/vendor/github.com/SevereCloud/vksdk/v2/api/board.go
new file mode 100644
index 00000000..82ddd5c0
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/board.go
@@ -0,0 +1,173 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// BoardAddTopic creates a new topic on a community's discussion board.
+//
+// https://vk.com/dev/board.addTopic
+func (vk *VK) BoardAddTopic(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("board.addTopic", &response, params)
+ return
+}
+
+// BoardCloseTopic closes a topic on a community's discussion board so that comments cannot be posted.
+//
+// https://vk.com/dev/board.closeTopic
+func (vk *VK) BoardCloseTopic(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("board.closeTopic", &response, params)
+ return
+}
+
+// BoardCreateComment adds a comment on a topic on a community's discussion board.
+//
+// https://vk.com/dev/board.createComment
+func (vk *VK) BoardCreateComment(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("board.createComment", &response, params)
+ return
+}
+
+// BoardDeleteComment deletes a comment on a topic on a community's discussion board.
+//
+// https://vk.com/dev/board.deleteComment
+func (vk *VK) BoardDeleteComment(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("board.deleteComment", &response, params)
+ return
+}
+
+// BoardDeleteTopic deletes a topic from a community's discussion board.
+//
+// https://vk.com/dev/board.deleteTopic
+func (vk *VK) BoardDeleteTopic(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("board.deleteTopic", &response, params)
+ return
+}
+
+// BoardEditComment edits a comment on a topic on a community's discussion board.
+//
+// https://vk.com/dev/board.editComment
+func (vk *VK) BoardEditComment(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("board.editComment", &response, params)
+ return
+}
+
+// BoardEditTopic edits the title of a topic on a community's discussion board.
+//
+// https://vk.com/dev/board.editTopic
+func (vk *VK) BoardEditTopic(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("board.editTopic", &response, params)
+ return
+}
+
+// BoardFixTopic pins a topic (fixes its place) to the top of a community's discussion board.
+//
+// https://vk.com/dev/board.fixTopic
+func (vk *VK) BoardFixTopic(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("board.fixTopic", &response, params)
+ return
+}
+
+// BoardGetCommentsResponse struct.
+type BoardGetCommentsResponse struct {
+ Count int `json:"count"`
+ Items []object.BoardTopicComment `json:"items"`
+ Poll object.BoardTopicPoll `json:"poll"`
+ RealOffset int `json:"real_offset"`
+}
+
+// BoardGetComments returns a list of comments on a topic on a community's discussion board.
+//
+// extended=0
+//
+// https://vk.com/dev/board.getComments
+func (vk *VK) BoardGetComments(params Params) (response BoardGetCommentsResponse, err error) {
+ err = vk.RequestUnmarshal("board.getComments", &response, params, Params{"extended": false})
+
+ return
+}
+
+// BoardGetCommentsExtendedResponse struct.
+type BoardGetCommentsExtendedResponse struct {
+ Count int `json:"count"`
+ Items []object.BoardTopicComment `json:"items"`
+ Poll object.BoardTopicPoll `json:"poll"`
+ RealOffset int `json:"real_offset"`
+ Profiles []object.UsersUser `json:"profiles"`
+ Groups []object.GroupsGroup `json:"groups"`
+}
+
+// BoardGetCommentsExtended returns a list of comments on a topic on a community's discussion board.
+//
+// extended=1
+//
+// https://vk.com/dev/board.getComments
+func (vk *VK) BoardGetCommentsExtended(params Params) (response BoardGetCommentsExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("board.getComments", &response, params, Params{"extended": true})
+
+ return
+}
+
+// BoardGetTopicsResponse struct.
+type BoardGetTopicsResponse struct {
+ Count int `json:"count"`
+ Items []object.BoardTopic `json:"items"`
+ DefaultOrder float64 `json:"default_order"` // BUG(VK): default_order int https://vk.com/bug136682
+ CanAddTopics object.BaseBoolInt `json:"can_add_topics"`
+}
+
+// BoardGetTopics returns a list of topics on a community's discussion board.
+//
+// extended=0
+//
+// https://vk.com/dev/board.getTopics
+func (vk *VK) BoardGetTopics(params Params) (response BoardGetTopicsResponse, err error) {
+ err = vk.RequestUnmarshal("board.getTopics", &response, params, Params{"extended": false})
+
+ return
+}
+
+// BoardGetTopicsExtendedResponse struct.
+type BoardGetTopicsExtendedResponse struct {
+ Count int `json:"count"`
+ Items []object.BoardTopic `json:"items"`
+ DefaultOrder float64 `json:"default_order"` // BUG(VK): default_order int https://vk.com/bug136682
+ CanAddTopics object.BaseBoolInt `json:"can_add_topics"`
+ Profiles []object.UsersUser `json:"profiles"`
+ Groups []object.GroupsGroup `json:"groups"`
+}
+
+// BoardGetTopicsExtended returns a list of topics on a community's discussion board.
+//
+// extended=1
+//
+// https://vk.com/dev/board.getTopics
+func (vk *VK) BoardGetTopicsExtended(params Params) (response BoardGetTopicsExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("board.getTopics", &response, params, Params{"extended": true})
+
+ return
+}
+
+// BoardOpenTopic re-opens a previously closed topic on a community's discussion board.
+//
+// https://vk.com/dev/board.openTopic
+func (vk *VK) BoardOpenTopic(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("board.openTopic", &response, params)
+ return
+}
+
+// BoardRestoreComment restores a comment deleted from a topic on a community's discussion board.
+//
+// https://vk.com/dev/board.restoreComment
+func (vk *VK) BoardRestoreComment(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("board.restoreComment", &response, params)
+ return
+}
+
+// BoardUnfixTopic unpins a pinned topic from the top of a community's discussion board.
+//
+// https://vk.com/dev/board.unfixTopic
+func (vk *VK) BoardUnfixTopic(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("board.unfixTopic", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/captcha.go b/vendor/github.com/SevereCloud/vksdk/v2/api/captcha.go
new file mode 100644
index 00000000..4abd1f8a
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/captcha.go
@@ -0,0 +1,7 @@
+package api
+
+// CaptchaForce api method.
+func (vk *VK) CaptchaForce(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("captcha.force", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/database.go b/vendor/github.com/SevereCloud/vksdk/v2/api/database.go
new file mode 100644
index 00000000..9a199762
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/database.go
@@ -0,0 +1,163 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// DatabaseGetChairsResponse struct.
+type DatabaseGetChairsResponse struct {
+ Count int `json:"count"`
+ Items []object.BaseObject `json:"items"`
+}
+
+// DatabaseGetChairs returns list of chairs on a specified faculty.
+//
+// https://vk.com/dev/database.getChairs
+func (vk *VK) DatabaseGetChairs(params Params) (response DatabaseGetChairsResponse, err error) {
+ err = vk.RequestUnmarshal("database.getChairs", &response, params)
+ return
+}
+
+// DatabaseGetCitiesResponse struct.
+type DatabaseGetCitiesResponse struct {
+ Count int `json:"count"`
+ Items []object.DatabaseCity `json:"items"`
+}
+
+// DatabaseGetCities returns a list of cities.
+//
+// https://vk.com/dev/database.getCities
+func (vk *VK) DatabaseGetCities(params Params) (response DatabaseGetCitiesResponse, err error) {
+ err = vk.RequestUnmarshal("database.getCities", &response, params)
+ return
+}
+
+// DatabaseGetCitiesByIDResponse struct.
+type DatabaseGetCitiesByIDResponse []object.DatabaseCity
+
+// DatabaseGetCitiesByID returns information about cities by their IDs.
+//
+// https://vk.com/dev/database.getCitiesByID
+func (vk *VK) DatabaseGetCitiesByID(params Params) (response DatabaseGetCitiesByIDResponse, err error) {
+ err = vk.RequestUnmarshal("database.getCitiesById", &response, params)
+ return
+}
+
+// DatabaseGetCountriesResponse struct.
+type DatabaseGetCountriesResponse struct {
+ Count int `json:"count"`
+ Items []object.BaseObject `json:"items"`
+}
+
+// DatabaseGetCountries returns a list of countries.
+//
+// https://vk.com/dev/database.getCountries
+func (vk *VK) DatabaseGetCountries(params Params) (response DatabaseGetCountriesResponse, err error) {
+ err = vk.RequestUnmarshal("database.getCountries", &response, params)
+ return
+}
+
+// DatabaseGetCountriesByIDResponse struct.
+type DatabaseGetCountriesByIDResponse []object.BaseObject
+
+// DatabaseGetCountriesByID returns information about countries by their IDs.
+//
+// https://vk.com/dev/database.getCountriesByID
+func (vk *VK) DatabaseGetCountriesByID(params Params) (response DatabaseGetCountriesByIDResponse, err error) {
+ err = vk.RequestUnmarshal("database.getCountriesById", &response, params)
+ return
+}
+
+// DatabaseGetFacultiesResponse struct.
+type DatabaseGetFacultiesResponse struct {
+ Count int `json:"count"`
+ Items []object.DatabaseFaculty `json:"items"`
+}
+
+// DatabaseGetFaculties returns a list of faculties (i.e., university departments).
+//
+// https://vk.com/dev/database.getFaculties
+func (vk *VK) DatabaseGetFaculties(params Params) (response DatabaseGetFacultiesResponse, err error) {
+ err = vk.RequestUnmarshal("database.getFaculties", &response, params)
+ return
+}
+
+// DatabaseGetMetroStationsResponse struct.
+type DatabaseGetMetroStationsResponse struct {
+ Count int `json:"count"`
+ Items []object.DatabaseMetroStation `json:"items"`
+}
+
+// DatabaseGetMetroStations returns the list of metro stations.
+//
+// https://vk.com/dev/database.getMetroStations
+func (vk *VK) DatabaseGetMetroStations(params Params) (response DatabaseGetMetroStationsResponse, err error) {
+ err = vk.RequestUnmarshal("database.getMetroStations", &response, params)
+ return
+}
+
+// DatabaseGetMetroStationsByIDResponse struct.
+type DatabaseGetMetroStationsByIDResponse []object.DatabaseMetroStation
+
+// DatabaseGetMetroStationsByID returns information about one or several metro stations by their identifiers.
+//
+// https://vk.com/dev/database.getMetroStationsById
+func (vk *VK) DatabaseGetMetroStationsByID(params Params) (response DatabaseGetMetroStationsByIDResponse, err error) {
+ err = vk.RequestUnmarshal("database.getMetroStationsById", &response, params)
+ return
+}
+
+// DatabaseGetRegionsResponse struct.
+type DatabaseGetRegionsResponse struct {
+ Count int `json:"count"`
+ Items []object.DatabaseRegion `json:"items"`
+}
+
+// DatabaseGetRegions returns a list of regions.
+//
+// https://vk.com/dev/database.getRegions
+func (vk *VK) DatabaseGetRegions(params Params) (response DatabaseGetRegionsResponse, err error) {
+ err = vk.RequestUnmarshal("database.getRegions", &response, params)
+ return
+}
+
+// DatabaseGetSchoolClassesResponse struct.
+type DatabaseGetSchoolClassesResponse [][]interface{}
+
+// DatabaseGetSchoolClasses returns a list of school classes specified for the country.
+//
+// BUG(VK): database.getSchoolClasses bad return.
+//
+// https://vk.com/dev/database.getSchoolClasses
+func (vk *VK) DatabaseGetSchoolClasses(params Params) (response DatabaseGetSchoolClassesResponse, err error) {
+ err = vk.RequestUnmarshal("database.getSchoolClasses", &response, params)
+ return
+}
+
+// DatabaseGetSchoolsResponse struct.
+type DatabaseGetSchoolsResponse struct {
+ Count int `json:"count"`
+ Items []object.DatabaseSchool `json:"items"`
+}
+
+// DatabaseGetSchools returns a list of schools.
+//
+// https://vk.com/dev/database.getSchools
+func (vk *VK) DatabaseGetSchools(params Params) (response DatabaseGetSchoolsResponse, err error) {
+ err = vk.RequestUnmarshal("database.getSchools", &response, params)
+ return
+}
+
+// DatabaseGetUniversitiesResponse struct.
+type DatabaseGetUniversitiesResponse struct {
+ Count int `json:"count"`
+ Items []object.DatabaseUniversity `json:"items"`
+}
+
+// DatabaseGetUniversities returns a list of higher education institutions.
+//
+// https://vk.com/dev/database.getUniversities
+func (vk *VK) DatabaseGetUniversities(params Params) (response DatabaseGetUniversitiesResponse, err error) {
+ err = vk.RequestUnmarshal("database.getUniversities", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/docs.go b/vendor/github.com/SevereCloud/vksdk/v2/api/docs.go
new file mode 100644
index 00000000..48605dae
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/docs.go
@@ -0,0 +1,137 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// DocsAdd copies a document to a user's or community's document list.
+//
+// https://vk.com/dev/docs.add
+func (vk *VK) DocsAdd(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("docs.add", &response, params)
+ return
+}
+
+// DocsDelete deletes a user or community document.
+//
+// https://vk.com/dev/docs.delete
+func (vk *VK) DocsDelete(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("docs.delete", &response, params)
+ return
+}
+
+// DocsEdit edits a document.
+//
+// https://vk.com/dev/docs.edit
+func (vk *VK) DocsEdit(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("docs.edit", &response, params)
+ return
+}
+
+// DocsGetResponse struct.
+type DocsGetResponse struct {
+ Count int `json:"count"`
+ Items []object.DocsDoc `json:"items"`
+}
+
+// DocsGet returns detailed information about user or community documents.
+//
+// https://vk.com/dev/docs.get
+func (vk *VK) DocsGet(params Params) (response DocsGetResponse, err error) {
+ err = vk.RequestUnmarshal("docs.get", &response, params)
+ return
+}
+
+// DocsGetByIDResponse struct.
+type DocsGetByIDResponse []object.DocsDoc
+
+// DocsGetByID returns information about documents by their IDs.
+//
+// https://vk.com/dev/docs.getById
+func (vk *VK) DocsGetByID(params Params) (response DocsGetByIDResponse, err error) {
+ err = vk.RequestUnmarshal("docs.getById", &response, params)
+ return
+}
+
+// DocsGetMessagesUploadServerResponse struct.
+type DocsGetMessagesUploadServerResponse struct {
+ UploadURL string `json:"upload_url"`
+}
+
+// DocsGetMessagesUploadServer returns the server address for document upload.
+//
+// https://vk.com/dev/docs.getMessagesUploadServer
+func (vk *VK) DocsGetMessagesUploadServer(params Params) (response DocsGetMessagesUploadServerResponse, err error) {
+ err = vk.RequestUnmarshal("docs.getMessagesUploadServer", &response, params)
+ return
+}
+
+// DocsGetTypesResponse struct.
+type DocsGetTypesResponse struct {
+ Count int `json:"count"`
+ Items []object.DocsDocTypes `json:"items"`
+}
+
+// DocsGetTypes returns documents types available for current user.
+//
+// https://vk.com/dev/docs.getTypes
+func (vk *VK) DocsGetTypes(params Params) (response DocsGetTypesResponse, err error) {
+ err = vk.RequestUnmarshal("docs.getTypes", &response, params)
+ return
+}
+
+// DocsGetUploadServerResponse struct.
+type DocsGetUploadServerResponse struct {
+ UploadURL string `json:"upload_url"`
+}
+
+// DocsGetUploadServer returns the server address for document upload.
+//
+// https://vk.com/dev/docs.getUploadServer
+func (vk *VK) DocsGetUploadServer(params Params) (response DocsGetUploadServerResponse, err error) {
+ err = vk.RequestUnmarshal("docs.getUploadServer", &response, params)
+ return
+}
+
+// DocsGetWallUploadServerResponse struct.
+type DocsGetWallUploadServerResponse struct {
+ UploadURL string `json:"upload_url"`
+}
+
+// DocsGetWallUploadServer returns the server address for document upload onto a user's or community's wall.
+//
+// https://vk.com/dev/docs.getWallUploadServer
+func (vk *VK) DocsGetWallUploadServer(params Params) (response DocsGetWallUploadServerResponse, err error) {
+ err = vk.RequestUnmarshal("docs.getWallUploadServer", &response, params)
+ return
+}
+
+// DocsSaveResponse struct.
+type DocsSaveResponse struct {
+ Type string `json:"type"`
+ AudioMessage object.MessagesAudioMessage `json:"audio_message"`
+ Doc object.DocsDoc `json:"doc"`
+ Graffiti object.MessagesGraffiti `json:"graffiti"`
+}
+
+// DocsSave saves a document after uploading it to a server.
+//
+// https://vk.com/dev/docs.save
+func (vk *VK) DocsSave(params Params) (response DocsSaveResponse, err error) {
+ err = vk.RequestUnmarshal("docs.save", &response, params)
+ return
+}
+
+// DocsSearchResponse struct.
+type DocsSearchResponse struct {
+ Count int `json:"count"`
+ Items []object.DocsDoc `json:"items"`
+}
+
+// DocsSearch returns a list of documents matching the search criteria.
+//
+// https://vk.com/dev/docs.search
+func (vk *VK) DocsSearch(params Params) (response DocsSearchResponse, err error) {
+ err = vk.RequestUnmarshal("docs.search", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/donut.go b/vendor/github.com/SevereCloud/vksdk/v2/api/donut.go
new file mode 100644
index 00000000..d6a13837
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/donut.go
@@ -0,0 +1,49 @@
+package api
+
+import "github.com/SevereCloud/vksdk/v2/object"
+
+// DonutGetFriendsResponse struct.
+type DonutGetFriendsResponse struct {
+ Count int `json:"count"`
+ Items []object.UsersUser `json:"items"`
+}
+
+// DonutGetFriends method.
+//
+// https://vk.com/dev/donut.getFriends
+func (vk *VK) DonutGetFriends(params Params) (response DonutGetFriendsResponse, err error) {
+ err = vk.RequestUnmarshal("donut.getFriends", &response, params)
+ return
+}
+
+// DonutGetSubscription method.
+//
+// https://vk.com/dev/donut.getSubscription
+func (vk *VK) DonutGetSubscription(params Params) (response object.DonutDonatorSubscriptionInfo, err error) {
+ err = vk.RequestUnmarshal("donut.getSubscription", &response, params)
+ return
+}
+
+// DonutGetSubscriptionsResponse struct.
+type DonutGetSubscriptionsResponse struct {
+ Subscriptions []object.DonutDonatorSubscriptionInfo `json:"subscriptions"`
+ Count int `json:"count"`
+ Profiles []object.UsersUser `json:"profiles"`
+ Groups []object.GroupsGroup `json:"groups"`
+}
+
+// DonutGetSubscriptions method.
+//
+// https://vk.com/dev/donut.getSubscriptions
+func (vk *VK) DonutGetSubscriptions(params Params) (response DonutGetSubscriptionsResponse, err error) {
+ err = vk.RequestUnmarshal("donut.getSubscriptions", &response, params)
+ return
+}
+
+// DonutIsDon method.
+//
+// https://vk.com/dev/donut.isDon
+func (vk *VK) DonutIsDon(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("donut.isDon", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/downloadedGames.go b/vendor/github.com/SevereCloud/vksdk/v2/api/downloadedGames.go
new file mode 100644
index 00000000..cd03cfdb
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/downloadedGames.go
@@ -0,0 +1,19 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// DownloadedGamesGetPaidStatusResponse struct.
+type DownloadedGamesGetPaidStatusResponse struct {
+ IsPaid object.BaseBoolInt `json:"is_paid"`
+}
+
+// DownloadedGamesGetPaidStatus method.
+//
+// https://vk.com/dev/downloadedGames.getPaidStatus
+func (vk *VK) DownloadedGamesGetPaidStatus(params Params) (response DownloadedGamesGetPaidStatusResponse, err error) {
+ err = vk.RequestUnmarshal("downloadedGames.getPaidStatus", &response, params, Params{"extended": false})
+
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/errors.go b/vendor/github.com/SevereCloud/vksdk/v2/api/errors.go
new file mode 100644
index 00000000..a852e7d9
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/errors.go
@@ -0,0 +1,927 @@
+package api
+
+import (
+ "errors"
+ "fmt"
+
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// ErrorType is the type of an error.
+type ErrorType int
+
+// Error returns the message of a ErrorType.
+func (e ErrorType) Error() string {
+ return fmt.Sprintf("api: error with code %d", e)
+}
+
+// Error codes. See https://vk.com/dev/errors
+const (
+ ErrNoType ErrorType = 0 // NoType error
+
+ // Unknown error occurred
+ //
+ // Try again later.
+ ErrUnknown ErrorType = 1
+
+ // Application is disabled. Enable your application or use test mode
+ //
+ // You need to switch on the app in Settings
+ // https://vk.com/editapp?id={Your API_ID}
+ // or use the test mode (test_mode=1).
+ ErrDisabled ErrorType = 2
+
+ // Unknown method passed.
+ //
+ // Check the method name: http://vk.com/dev/methods
+ ErrMethod ErrorType = 3
+ ErrSignature ErrorType = 4 // Incorrect signature
+
+ // User authorization failed
+ //
+ // Make sure that you use a correct authorization type.
+ ErrAuth ErrorType = 5
+
+ // Too many requests per second
+ //
+ // Decrease the request frequency or use the execute method.
+ // More details on frequency limits here:
+ // https://vk.com/dev/api_requests
+ ErrTooMany ErrorType = 6
+
+ // Permission to perform this action is denied
+ //
+ // Make sure that your have received required permissions during the
+ // authorization.
+ // You can do it with the account.getAppPermissions method.
+ // https://vk.com/dev/permissions
+ ErrPermission ErrorType = 7
+
+ // Invalid request
+ //
+ // Check the request syntax and used parameters list (it can be found on
+ // a method description page).
+ ErrRequest ErrorType = 8
+
+ // Flood control
+ //
+ // You need to decrease the count of identical requests. For more efficient
+ // work you may use execute.
+ ErrFlood ErrorType = 9
+
+ // Internal server error
+ //
+ // Try again later.
+ ErrServer ErrorType = 10
+
+ // In test mode application should be disabled or user should be authorized
+ //
+ // Switch the app off in Settings:
+ //
+ // https://vk.com/editapp?id={Your API_ID}
+ //
+ ErrEnabledInTest ErrorType = 11
+
+ // Unable to compile code.
+ ErrCompile ErrorType = 12
+
+ // Runtime error occurred during code invocation.
+ ErrRuntime ErrorType = 13
+
+ // Captcha needed.
+ //
+ // See https://vk.com/dev/captcha_error
+ ErrCaptcha ErrorType = 14
+
+ // Access denied
+ //
+ // Make sure that you use correct identifiers and the content is available
+ // for the user in the full version of the site.
+ ErrAccess ErrorType = 15
+
+ // HTTP authorization failed
+ //
+ // To avoid this error check if a user has the 'Use secure connection'
+ // option enabled with the account.getInfo method.
+ ErrAuthHTTPS ErrorType = 16
+
+ // Validation required
+ //
+ // Make sure that you don't use a token received with
+ // http://vk.com/dev/auth_mobile for a request from the server.
+ // It's restricted.
+ //
+ // https://vk.com/dev/need_validation
+ ErrAuthValidation ErrorType = 17
+ ErrUserDeleted ErrorType = 18 // User was deleted or banned
+ ErrBlocked ErrorType = 19 // Content blocked
+
+ // Permission to perform this action is denied for non-standalone
+ // applications.
+ ErrMethodPermission ErrorType = 20
+
+ // Permission to perform this action is allowed only for standalone and
+ // OpenAPI applications.
+ ErrMethodAds ErrorType = 21
+ ErrUpload ErrorType = 22 // Upload error
+
+ // This method was disabled.
+ //
+ // All the methods available now are listed here: http://vk.com/dev/methods
+ ErrMethodDisabled ErrorType = 23
+
+ // Confirmation required
+ //
+ // In some cases VK requires to request action confirmation from the user
+ // (for Standalone apps only).
+ //
+ // Following parameter is transmitted with the error message as well:
+ //
+ // confirmation_text – text of the message to be shown in the default
+ // confirmation window.
+ //
+ // The app should display the default confirmation window
+ // with text from confirmation_text and two buttons: "Continue" and
+ // "Cancel".
+ // If user confirms the action repeat the request with an extra parameter:
+ //
+ // confirm = 1.
+ //
+ // https://vk.com/dev/need_confirmation
+ ErrNeedConfirmation ErrorType = 24
+ ErrNeedTokenConfirmation ErrorType = 25 // Token confirmation required
+ ErrGroupAuth ErrorType = 27 // Group authorization failed
+ ErrAppAuth ErrorType = 28 // Application authorization failed
+
+ // Rate limit reached.
+ //
+ // More details on rate limits here: https://vk.com/dev/data_limits
+ ErrRateLimit ErrorType = 29
+ ErrPrivateProfile ErrorType = 30 // This profile is private
+
+ // Method execution was interrupted due to timeout.
+ ErrExecutionTimeout ErrorType = 36
+
+ // User was banned.
+ ErrUserBanned ErrorType = 37
+
+ // Unknown application.
+ ErrUnknownApplication ErrorType = 38
+
+ // Unknown user.
+ ErrUnknownUser ErrorType = 39
+
+ // Unknown group.
+ ErrUnknownGroup ErrorType = 40
+
+ // One of the parameters specified was missing or invalid
+ //
+ // Check the required parameters list and their format on a method
+ // description page.
+ ErrParam ErrorType = 100
+
+ // Invalid application API ID
+ //
+ // Find the app in the administrated list in settings:
+ // http://vk.com/apps?act=settings
+ // And set the correct API_ID in the request.
+ ErrParamAPIID ErrorType = 101
+ ErrLimits ErrorType = 103 // Out of limits
+ ErrNotFound ErrorType = 104 // Not found
+ ErrSaveFile ErrorType = 105 // Couldn't save file
+ ErrActionFailed ErrorType = 106 // Unable to process action
+
+ // Invalid user id
+ //
+ // Make sure that you use a correct id. You can get an id using a screen
+ // name with the utils.resolveScreenName method.
+ ErrParamUserID ErrorType = 113
+ ErrParamAlbumID ErrorType = 114 // Invalid album id
+ ErrParamServer ErrorType = 118 // Invalid server
+ ErrParamTitle ErrorType = 119 // Invalid title
+ ErrParamPhotos ErrorType = 122 // Invalid photos
+ ErrParamHash ErrorType = 121 // Invalid hash
+ ErrParamPhoto ErrorType = 129 // Invalid photo
+ ErrParamGroupID ErrorType = 125 // Invalid group id
+ ErrParamPageID ErrorType = 140 // Page not found
+ ErrAccessPage ErrorType = 141 // Access to page denied
+
+ // The mobile number of the user is unknown.
+ ErrMobileNotActivated ErrorType = 146
+
+ // Application has insufficient funds.
+ ErrInsufficientFunds ErrorType = 147
+
+ // Access to the menu of the user denied.
+ ErrAccessMenu ErrorType = 148
+
+ // Invalid timestamp
+ //
+ // You may get a correct value with the utils.getServerTime method.
+ ErrParamTimestamp ErrorType = 150
+ ErrFriendsListID ErrorType = 171 // Invalid list id
+
+ // Reached the maximum number of lists.
+ ErrFriendsListLimit ErrorType = 173
+
+ // Cannot add user himself as friend.
+ ErrFriendsAddYourself ErrorType = 174
+
+ // Cannot add this user to friends as they have put you on their blacklist.
+ ErrFriendsAddInEnemy ErrorType = 175
+
+ // Cannot add this user to friends as you put him on blacklist.
+ ErrFriendsAddEnemy ErrorType = 176
+
+ // Cannot add this user to friends as user not found.
+ ErrFriendsAddNotFound ErrorType = 177
+ ErrParamNoteID ErrorType = 180 // Note not found
+ ErrAccessNote ErrorType = 181 // Access to note denied
+ ErrAccessNoteComment ErrorType = 182 // You can't comment this note
+ ErrAccessComment ErrorType = 183 // Access to comment denied
+
+ // Access to album denied
+ //
+ // Make sure you use correct ids (owner_id is always positive for users,
+ // negative for communities) and the current user has access to the
+ // requested content in the full version of the site.
+ ErrAccessAlbum ErrorType = 200
+
+ // Access to audio denied
+ //
+ // Make sure you use correct ids (owner_id is always positive for users,
+ // negative for communities) and the current user has access to the
+ // requested content in the full version of the site.
+ ErrAccessAudio ErrorType = 201
+
+ // Access to group denied
+ //
+ // Make sure that the current user is a member or admin of the community
+ // (for closed and private groups and events).
+ ErrAccessGroup ErrorType = 203
+
+ // Access denied.
+ ErrAccessVideo ErrorType = 204
+
+ // Access denied.
+ ErrAccessMarket ErrorType = 205
+
+ // Access to wall's post denied.
+ ErrWallAccessPost ErrorType = 210
+
+ // Access to wall's comment denied.
+ ErrWallAccessComment ErrorType = 211
+
+ // Access to post comments denied.
+ ErrWallAccessReplies ErrorType = 212
+
+ // Access to status replies denied.
+ ErrWallAccessAddReply ErrorType = 213
+
+ // Access to adding post denied.
+ ErrWallAddPost ErrorType = 214
+
+ // Advertisement post was recently added.
+ ErrWallAdsPublished ErrorType = 219
+
+ // Too many recipients.
+ ErrWallTooManyRecipients ErrorType = 220
+
+ // User disabled track name broadcast.
+ ErrStatusNoAudio ErrorType = 221
+
+ // Hyperlinks are forbidden.
+ ErrWallLinksForbidden ErrorType = 222
+
+ // Too many replies.
+ ErrWallReplyOwnerFlood ErrorType = 223
+
+ // Too many ads posts.
+ ErrWallAdsPostLimitReached ErrorType = 224
+
+ // Donut is disabled.
+ ErrDonutDisabled ErrorType = 225
+
+ // Reaction can not be applied to the object.
+ ErrLikesReactionCanNotBeApplied ErrorType = 232
+
+ // Access to poll denied.
+ ErrPollsAccess ErrorType = 250
+
+ // Invalid answer id.
+ ErrPollsAnswerID ErrorType = 252
+
+ // Invalid poll id.
+ ErrPollsPollID ErrorType = 251
+
+ // Access denied, please vote first.
+ ErrPollsAccessWithoutVote ErrorType = 253
+
+ // Access to the groups list is denied due to the user's privacy settings.
+ ErrAccessGroups ErrorType = 260
+
+ // This album is full
+ //
+ // You need to delete the odd objects from the album or use another album.
+ ErrAlbumFull ErrorType = 300
+ ErrAlbumsLimit ErrorType = 302 // Albums number limit is reached
+
+ // Permission denied. You must enable votes processing in application
+ // settings
+ //
+ // Check the app settings:
+ //
+ // http://vk.com/editapp?id={Your API_ID}&section=payments
+ //
+ ErrVotesPermission ErrorType = 500
+
+ // Not enough votes.
+ ErrVotes ErrorType = 503
+
+ // Not enough money on owner's balance.
+ ErrNotEnoughMoney ErrorType = 504
+
+ // Permission denied. You have no access to operations specified with
+ // given object(s).
+ ErrAdsPermission ErrorType = 600
+
+ // Permission denied. You have requested too many actions this day. Try
+ // later.
+ ErrWeightedFlood ErrorType = 601
+
+ // Some part of the request has not been completed.
+ ErrAdsPartialSuccess ErrorType = 602
+
+ // Some ads error occurred.
+ ErrAdsSpecific ErrorType = 603
+
+ // Invalid domain.
+ ErrAdsDomainInvalid ErrorType = 604
+
+ // Domain is forbidden.
+ ErrAdsDomainForbidden ErrorType = 605
+
+ // Domain is reserved.
+ ErrAdsDomainReserved ErrorType = 606
+
+ // Domain is occupied.
+ ErrAdsDomainOccupied ErrorType = 607
+
+ // Domain is active.
+ ErrAdsDomainActive ErrorType = 608
+
+ // Domain app is invalid.
+ ErrAdsDomainAppInvalid ErrorType = 609
+
+ // Domain app is forbidden.
+ ErrAdsDomainAppForbidden ErrorType = 610
+
+ // Application must be verified.
+ ErrAdsApplicationMustBeVerified ErrorType = 611
+
+ // Application must be in domains list of site of ad unit.
+ ErrAdsApplicationMustBeInDomainsList ErrorType = 612
+
+ // Application is blocked.
+ ErrAdsApplicationBlocked ErrorType = 613
+
+ // Domain of type specified is forbidden in current office type.
+ ErrAdsDomainTypeForbiddenInCurrentOffice ErrorType = 614
+
+ // Domain group is invalid.
+ ErrAdsDomainGroupInvalid ErrorType = 615
+
+ // Domain group is forbidden.
+ ErrAdsDomainGroupForbidden ErrorType = 616
+
+ // Domain app is blocked.
+ ErrAdsDomainAppBlocked ErrorType = 617
+
+ // Domain group is not open.
+ ErrAdsDomainGroupNotOpen ErrorType = 618
+
+ // Domain group is not possible to be joined to adsweb.
+ ErrAdsDomainGroupNotPossibleJoined ErrorType = 619
+
+ // Domain group is blocked.
+ ErrAdsDomainGroupBlocked ErrorType = 620
+
+ // Domain group has restriction: links are forbidden.
+ ErrAdsDomainGroupLinksForbidden ErrorType = 621
+
+ // Domain group has restriction: excluded from search.
+ ErrAdsDomainGroupExcludedFromSearch ErrorType = 622
+
+ // Domain group has restriction: cover is forbidden.
+ ErrAdsDomainGroupCoverForbidden ErrorType = 623
+
+ // Domain group has wrong category.
+ ErrAdsDomainGroupWrongCategory ErrorType = 624
+
+ // Domain group has wrong name.
+ ErrAdsDomainGroupWrongName ErrorType = 625
+
+ // Domain group has low posts reach.
+ ErrAdsDomainGroupLowPostsReach ErrorType = 626
+
+ // Domain group has wrong class.
+ ErrAdsDomainGroupWrongClass ErrorType = 627
+
+ // Domain group is created recently.
+ ErrAdsDomainGroupCreatedRecently ErrorType = 628
+
+ // Object deleted.
+ ErrAdsObjectDeleted ErrorType = 629
+
+ // Lookalike request with same source already in progress.
+ ErrAdsLookalikeRequestAlreadyInProgress ErrorType = 630
+
+ // Max count of lookalike requests per day reached.
+ ErrAdsLookalikeRequestsLimit ErrorType = 631
+
+ // Given audience is too small.
+ ErrAdsAudienceTooSmall ErrorType = 632
+
+ // Given audience is too large.
+ ErrAdsAudienceTooLarge ErrorType = 633
+
+ // Lookalike request audience save already in progress.
+ ErrAdsLookalikeAudienceSaveAlreadyInProgress ErrorType = 634
+
+ // Max count of lookalike request audience saves per day reached.
+ ErrAdsLookalikeSavesLimit ErrorType = 635
+
+ // Max count of retargeting groups reached.
+ ErrAdsRetargetingGroupsLimit ErrorType = 636
+
+ // Domain group has active nemesis punishment.
+ ErrAdsDomainGroupActiveNemesisPunishment ErrorType = 637
+
+ // Cannot edit creator role.
+ ErrGroupChangeCreator ErrorType = 700
+
+ // User should be in club.
+ ErrGroupNotInClub ErrorType = 701
+
+ // Too many officers in club.
+ ErrGroupTooManyOfficers ErrorType = 702
+
+ // You need to enable 2FA for this action.
+ ErrGroupNeed2fa ErrorType = 703
+
+ // User needs to enable 2FA for this action.
+ ErrGroupHostNeed2fa ErrorType = 704
+
+ // Too many addresses in club.
+ ErrGroupTooManyAddresses ErrorType = 706
+
+ // "Application is not installed in community.
+ ErrGroupAppIsNotInstalledInCommunity ErrorType = 711
+
+ // Invite link is invalid - expired, deleted or not exists.
+ ErrGroupInvalidInviteLink ErrorType = 714
+
+ // This video is already added.
+ ErrVideoAlreadyAdded ErrorType = 800
+
+ // Comments for this video are closed.
+ ErrVideoCommentsClosed ErrorType = 801
+
+ // Can't send messages for users from blacklist.
+ ErrMessagesUserBlocked ErrorType = 900
+
+ // Can't send messages for users without permission.
+ ErrMessagesDenySend ErrorType = 901
+
+ // Can't send messages to this user due to their privacy settings.
+ ErrMessagesPrivacy ErrorType = 902
+
+ // Value of ts or pts is too old.
+ ErrMessagesTooOldPts ErrorType = 907
+
+ // Value of ts or pts is too new.
+ ErrMessagesTooNewPts ErrorType = 908
+
+ // Can't edit this message, because it's too old.
+ ErrMessagesEditExpired ErrorType = 909
+
+ // Can't sent this message, because it's too big.
+ ErrMessagesTooBig ErrorType = 910
+
+ // Keyboard format is invalid.
+ ErrMessagesKeyboardInvalid ErrorType = 911
+
+ // This is a chat bot feature, change this status in settings.
+ ErrMessagesChatBotFeature ErrorType = 912
+
+ // Too many forwarded messages.
+ ErrMessagesTooLongForwards ErrorType = 913
+
+ // Message is too long.
+ ErrMessagesTooLongMessage ErrorType = 914
+
+ // You don't have access to this chat.
+ ErrMessagesChatUserNoAccess ErrorType = 917
+
+ // You can't see invite link for this chat.
+ ErrMessagesCantSeeInviteLink ErrorType = 919
+
+ // Can't edit this kind of message.
+ ErrMessagesEditKindDisallowed ErrorType = 920
+
+ // Can't forward these messages.
+ ErrMessagesCantFwd ErrorType = 921
+
+ // Can't delete this message for everybody.
+ ErrMessagesCantDeleteForAll ErrorType = 924
+
+ // You are not admin of this chat.
+ ErrMessagesChatNotAdmin ErrorType = 925
+
+ // Chat does not exist.
+ ErrMessagesChatNotExist ErrorType = 927
+
+ // You can't change invite link for this chat.
+ ErrMessagesCantChangeInviteLink ErrorType = 931
+
+ // Your community can't interact with this peer.
+ ErrMessagesGroupPeerAccess ErrorType = 932
+
+ // User not found in chat.
+ ErrMessagesChatUserNotInChat ErrorType = 935
+
+ // Contact not found.
+ ErrMessagesContactNotFound ErrorType = 936
+
+ // Message request already send.
+ ErrMessagesMessageRequestAlreadySend ErrorType = 939
+
+ // Too many posts in messages.
+ ErrMessagesTooManyPosts ErrorType = 940
+
+ // Cannot pin one-time story.
+ ErrMessagesCantPinOneTimeStory ErrorType = 942
+
+ // Cannot use this intent.
+ ErrMessagesCantUseIntent ErrorType = 943
+
+ // Limits overflow for this intent.
+ ErrMessagesLimitIntent ErrorType = 944
+
+ // Chat was disabled.
+ ErrMessagesChatDisabled ErrorType = 945
+
+ // Chat not support.
+ ErrMessagesChatNotSupported ErrorType = 946
+
+ // Can't add user to chat, because user has no access to group.
+ ErrMessagesMemberAccessToGroupDenied ErrorType = 947
+
+ // Can't edit pinned message yet.
+ ErrMessagesEditPinned ErrorType = 949
+
+ // Can't send message, reply timed out.
+ ErrMessagesReplyTimedOut ErrorType = 950
+
+ // Invalid phone number.
+ ErrParamPhone ErrorType = 1000
+
+ // This phone number is used by another user.
+ ErrPhoneAlreadyUsed ErrorType = 1004
+
+ // Too many auth attempts, try again later.
+ ErrAuthFloodError ErrorType = 1105
+
+ // Processing.. Try later.
+ ErrAuthDelay ErrorType = 1112
+
+ // Invalid document id.
+ ErrParamDocID ErrorType = 1150
+
+ // Access to document deleting is denied.
+ ErrParamDocDeleteAccess ErrorType = 1151
+
+ // Invalid document title.
+ ErrParamDocTitle ErrorType = 1152
+
+ // Access to document is denied.
+ ErrParamDocAccess ErrorType = 1153
+
+ // Original photo was changed.
+ ErrPhotoChanged ErrorType = 1160
+
+ // Too many feed lists.
+ ErrTooManyLists ErrorType = 1170
+
+ // This achievement is already unlocked.
+ ErrAppsAlreadyUnlocked ErrorType = 1251
+
+ // Subscription not found.
+ ErrAppsSubscriptionNotFound ErrorType = 1256
+
+ // Subscription is in invalid status.
+ ErrAppsSubscriptionInvalidStatus ErrorType = 1257
+
+ // Invalid screen name.
+ ErrInvalidAddress ErrorType = 1260
+
+ // Catalog is not available for this user.
+ ErrCommunitiesCatalogDisabled ErrorType = 1310
+
+ // Catalog categories are not available for this user.
+ ErrCommunitiesCategoriesDisabled ErrorType = 1311
+
+ // Too late for restore.
+ ErrMarketRestoreTooLate ErrorType = 1400
+
+ // Comments for this market are closed.
+ ErrMarketCommentsClosed ErrorType = 1401
+
+ // Album not found.
+ ErrMarketAlbumNotFound ErrorType = 1402
+
+ // Item not found.
+ ErrMarketItemNotFound ErrorType = 1403
+
+ // Item already added to album.
+ ErrMarketItemAlreadyAdded ErrorType = 1404
+
+ // Too many items.
+ ErrMarketTooManyItems ErrorType = 1405
+
+ // Too many items in album.
+ ErrMarketTooManyItemsInAlbum ErrorType = 1406
+
+ // Too many albums.
+ ErrMarketTooManyAlbums ErrorType = 1407
+
+ // Item has bad links in description.
+ ErrMarketItemHasBadLinks ErrorType = 1408
+
+ // Shop not enabled.
+ ErrMarketShopNotEnabled ErrorType = 1409
+
+ // Variant not found.
+ ErrMarketVariantNotFound ErrorType = 1416
+
+ // Property not found.
+ ErrMarketPropertyNotFound ErrorType = 1417
+
+ // Grouping must have two or more items.
+ ErrMarketGroupingMustContainMoreThanOneItem ErrorType = 1425
+
+ // Item must have distinct properties.
+ ErrMarketGroupingItemsMustHaveDistinctProperties ErrorType = 1426
+
+ // Cart is empty.
+ ErrMarketOrdersNoCartItems ErrorType = 1427
+
+ // Specify width, length, height and weight all together.
+ ErrMarketInvalidDimensions ErrorType = 1429
+
+ // VK Pay status can not be changed.
+ ErrMarketCantChangeVkpayStatus ErrorType = 1430
+
+ // Market was already enabled in this group.
+ ErrMarketShopAlreadyEnabled ErrorType = 1431
+
+ // Market was already disabled in this group.
+ ErrMarketShopAlreadyDisabled ErrorType = 1432
+
+ // Invalid image crop format.
+ ErrMarketPhotosCropInvalidFormat ErrorType = 1433
+
+ // Crop bottom right corner is outside of the image.
+ ErrMarketPhotosCropOverflow ErrorType = 1434
+
+ // Crop size is less than the minimum.
+ ErrMarketPhotosCropSizeTooLow ErrorType = 1435
+
+ // Cart is empty.
+ ErrMarketCartEmpty ErrorType = 1427
+
+ // Specify width, length, height and weight all together.
+ ErrMarketSpecifyDimensions ErrorType = 1429
+
+ // VK Pay status can not be changed.
+ ErrVKPayStatus ErrorType = 1430
+
+ // Market was already enabled in this group.
+ ErrMarketAlreadyEnabled ErrorType = 1431
+
+ // Market was already disabled in this group.
+ ErrMarketAlreadyDisabled ErrorType = 1432
+
+ // Story has already expired.
+ ErrStoryExpired ErrorType = 1600
+
+ // Incorrect reply privacy.
+ ErrStoryIncorrectReplyPrivacy ErrorType = 1602
+
+ // Card not found.
+ ErrPrettyCardsCardNotFound ErrorType = 1900
+
+ // Too many cards.
+ ErrPrettyCardsTooManyCards ErrorType = 1901
+
+ // Card is connected to post.
+ ErrPrettyCardsCardIsConnectedToPost ErrorType = 1902
+
+ // Servers number limit is reached.
+ ErrCallbackServersLimit ErrorType = 2000
+
+ // Specified link is incorrect (can't find source).
+ ErrWallCheckLinkCantDetermineSource ErrorType = 3102
+
+ // Recaptcha needed.
+ ErrRecaptcha ErrorType = 3300
+
+ // Phone validation needed.
+ ErrPhoneValidation ErrorType = 3301
+
+ // Password validation needed.
+ ErrPasswordValidation ErrorType = 3302
+
+ // Otp app validation needed.
+ ErrOtpAppValidation ErrorType = 3303
+
+ // Email confirmation needed.
+ ErrEmailConfirmation ErrorType = 3304
+
+ // Assert votes.
+ ErrAssertVotes ErrorType = 3305
+
+ // Token extension required.
+ ErrTokenExtension ErrorType = 3609
+
+ // User is deactivated.
+ ErrUserDeactivated ErrorType = 3610
+
+ // Service is deactivated for user.
+ ErrServiceDeactivated ErrorType = 3611
+
+ // Can't set AliExpress tag to this type of object.
+ ErrAliExpressTag ErrorType = 3800
+)
+
+// ErrorSubtype is the subtype of an error.
+type ErrorSubtype int
+
+// Error returns the message of a ErrorSubtype.
+func (e ErrorSubtype) Error() string {
+ return fmt.Sprintf("api: error with subcode %d", e)
+}
+
+// Error struct VK.
+type Error struct {
+ Code ErrorType `json:"error_code"`
+ Subcode ErrorSubtype `json:"error_subcode"`
+ Message string `json:"error_msg"`
+ Text string `json:"error_text"`
+ CaptchaSID string `json:"captcha_sid"`
+ CaptchaImg string `json:"captcha_img"`
+
+ // In some cases VK requires to request action confirmation from the user
+ // (for Standalone apps only). Following error will be returned:
+ //
+ // Error code: 24
+ // Error text: Confirmation required
+ //
+ // Following parameter is transmitted with the error message as well:
+ //
+ // confirmation_text – text of the message to be shown in the default
+ // confirmation window.
+ //
+ // The app should display the default confirmation window with text from
+ // confirmation_text and two buttons: "Continue" and "Cancel". If user
+ // confirms the action repeat the request with an extra parameter:
+ // confirm = 1.
+ //
+ // See https://vk.com/dev/need_confirmation
+ ConfirmationText string `json:"confirmation_text"`
+
+ // In some cases VK requires a user validation procedure. . As a result
+ // starting from API version 5.0 (for the older versions captcha_error
+ // will be requested) following error will be returned as a reply to any
+ // API request:
+ //
+ // Error code: 17
+ // Error text: Validation Required
+ //
+ // Following parameter is transmitted with an error message:
+ // redirect_uri – a special address to open in a browser to pass the
+ // validation procedure.
+ //
+ // After passing the validation a user will be redirected to the service
+ // page:
+ //
+ // https://oauth.vk.com/blank.html#{Data required for validation}
+ //
+ // In case of successful validation following parameters will be
+ // transmitted after #:
+ //
+ // https://oauth.vk.com/blank.html#success=1&access_token={NEW USER TOKEN}&user_id={USER ID}
+ //
+ // If a token was not received by https a new secret will be transmitted
+ // as well.
+ //
+ // In case of unsuccessful validation following address is transmitted:
+ //
+ // https://oauth.vk.com/blank.html#fail=1
+ //
+ // See https://vk.com/dev/need_validation
+ RedirectURI string `json:"redirect_uri"`
+ RequestParams []object.BaseRequestParam `json:"request_params"`
+}
+
+// Error returns the message of a Error.
+func (e Error) Error() string {
+ return "api: " + e.Message
+}
+
+// Is unwraps its first argument sequentially looking for an error that matches
+// the second.
+func (e Error) Is(target error) bool {
+ var tError *Error
+ if errors.As(target, &tError) {
+ return e.Code == tError.Code && e.Message == tError.Message
+ }
+
+ var tErrorType ErrorType
+ if errors.As(target, &tErrorType) {
+ return e.Code == tErrorType
+ }
+
+ return false
+}
+
+// ExecuteError struct.
+//
+// TODO: v3 Code is ErrorType.
+type ExecuteError struct {
+ Method string `json:"method"`
+ Code int `json:"error_code"`
+ Msg string `json:"error_msg"`
+}
+
+// ExecuteErrors type.
+type ExecuteErrors []ExecuteError
+
+// Error returns the message of a ExecuteErrors.
+func (e ExecuteErrors) Error() string {
+ return fmt.Sprintf("api: execute errors (%d)", len(e))
+}
+
+// InvalidContentType type.
+type InvalidContentType struct {
+ ContentType string
+}
+
+// Error returns the message of a InvalidContentType.
+func (e InvalidContentType) Error() string {
+ return "api: invalid content-type"
+}
+
+// UploadError type.
+type UploadError struct {
+ Err string `json:"error"`
+ Code int `json:"error_code"`
+ Descr string `json:"error_descr"`
+ IsLogged bool `json:"error_is_logged"`
+}
+
+// Error returns the message of a UploadError.
+func (e UploadError) Error() string {
+ if e.Err != "" {
+ return "api: " + e.Err
+ }
+
+ return fmt.Sprintf("api: upload code %d", e.Code)
+}
+
+// AdsError struct.
+type AdsError struct {
+ Code ErrorType `json:"error_code"`
+ Desc string `json:"error_desc"`
+}
+
+// Error returns the message of a AdsError.
+func (e AdsError) Error() string {
+ return "api: " + e.Desc
+}
+
+// Is unwraps its first argument sequentially looking for an error that matches
+// the second.
+func (e AdsError) Is(target error) bool {
+ var tAdsError *AdsError
+ if errors.As(target, &tAdsError) {
+ return e.Code == tAdsError.Code && e.Desc == tAdsError.Desc
+ }
+
+ var tErrorType ErrorType
+ if errors.As(target, &tErrorType) {
+ return e.Code == tErrorType
+ }
+
+ return false
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/execute.go b/vendor/github.com/SevereCloud/vksdk/v2/api/execute.go
new file mode 100644
index 00000000..5bee205a
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/execute.go
@@ -0,0 +1,52 @@
+package api
+
+import "encoding/json"
+
+// ExecuteWithArgs a universal method for calling a sequence of other methods
+// while saving and filtering interim results.
+//
+// The Args map variable allows you to retrieve the parameters passed during
+// the request and avoids code formatting.
+//
+// return Args.code; // return parameter "code"
+// return Args.v; // return parameter "v"
+//
+// https://vk.com/dev/execute
+func (vk *VK) ExecuteWithArgs(code string, params Params, obj interface{}) error {
+ token := vk.getToken()
+
+ reqParams := Params{
+ "code": code,
+ "access_token": token,
+ "v": vk.Version,
+ }
+
+ resp, err := vk.Handler("execute", params, reqParams)
+
+ jsonErr := json.Unmarshal(resp.Response, &obj)
+ if jsonErr != nil {
+ return jsonErr
+ }
+
+ if resp.ExecuteErrors != nil {
+ return &resp.ExecuteErrors
+ }
+
+ return err
+}
+
+// Execute a universal method for calling a sequence of other methods while
+// saving and filtering interim results.
+//
+// https://vk.com/dev/execute
+func (vk *VK) Execute(code string, obj interface{}) error {
+ return vk.ExecuteWithArgs(code, Params{}, obj)
+}
+
+func fmtBool(value bool) string {
+ if value {
+ return "1"
+ }
+
+ return "0"
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/fave.go b/vendor/github.com/SevereCloud/vksdk/v2/api/fave.go
new file mode 100644
index 00000000..5690aab8
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/fave.go
@@ -0,0 +1,231 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// FaveAddArticle adds a link to user faves.
+//
+// https://vk.com/dev/fave.addArticle
+func (vk *VK) FaveAddArticle(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("fave.addArticle", &response, params)
+ return
+}
+
+// FaveAddLink adds a link to user faves.
+//
+// https://vk.com/dev/fave.addLink
+func (vk *VK) FaveAddLink(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("fave.addLink", &response, params)
+ return
+}
+
+// FaveAddPage method.
+//
+// https://vk.com/dev/fave.addPage
+func (vk *VK) FaveAddPage(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("fave.addPage", &response, params)
+ return
+}
+
+// FaveAddPost method.
+//
+// https://vk.com/dev/fave.addPost
+func (vk *VK) FaveAddPost(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("fave.addPost", &response, params)
+ return
+}
+
+// FaveAddProduct method.
+//
+// https://vk.com/dev/fave.addProduct
+func (vk *VK) FaveAddProduct(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("fave.addProduct", &response, params)
+ return
+}
+
+// FaveAddTagResponse struct.
+type FaveAddTagResponse object.FaveTag
+
+// FaveAddTag method.
+//
+// https://vk.com/dev/fave.addTag
+func (vk *VK) FaveAddTag(params Params) (response FaveAddTagResponse, err error) {
+ err = vk.RequestUnmarshal("fave.addTag", &response, params)
+ return
+}
+
+// FaveAddVideo method.
+//
+// https://vk.com/dev/fave.addVideo
+func (vk *VK) FaveAddVideo(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("fave.addVideo", &response, params)
+ return
+}
+
+// FaveEditTag method.
+//
+// https://vk.com/dev/fave.editTag
+func (vk *VK) FaveEditTag(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("fave.editTag", &response, params)
+ return
+}
+
+// FaveGetResponse struct.
+type FaveGetResponse struct {
+ Count int `json:"count"`
+ Items []object.FaveItem `json:"items"`
+}
+
+// FaveGet method.
+//
+// extended=0
+//
+// https://vk.com/dev/fave.get
+func (vk *VK) FaveGet(params Params) (response FaveGetResponse, err error) {
+ err = vk.RequestUnmarshal("fave.get", &response, params, Params{"extended": false})
+
+ return
+}
+
+// FaveGetExtendedResponse struct.
+type FaveGetExtendedResponse struct {
+ Count int `json:"count"`
+ Items []object.FaveItem `json:"items"`
+ object.ExtendedResponse
+}
+
+// FaveGetExtended method.
+//
+// extended=1
+//
+// https://vk.com/dev/fave.get
+func (vk *VK) FaveGetExtended(params Params) (response FaveGetExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("fave.get", &response, params, Params{"extended": true})
+
+ return
+}
+
+// FaveGetPagesResponse struct.
+type FaveGetPagesResponse struct {
+ Count int `json:"count"`
+ Items []object.FavePage `json:"items"`
+}
+
+// FaveGetPages method.
+//
+// https://vk.com/dev/fave.getPages
+func (vk *VK) FaveGetPages(params Params) (response FaveGetPagesResponse, err error) {
+ err = vk.RequestUnmarshal("fave.getPages", &response, params)
+ return
+}
+
+// FaveGetTagsResponse struct.
+type FaveGetTagsResponse struct {
+ Count int `json:"count"`
+ Items []object.FaveTag `json:"items"`
+}
+
+// FaveGetTags method.
+//
+// https://vk.com/dev/fave.getTags
+func (vk *VK) FaveGetTags(params Params) (response FaveGetTagsResponse, err error) {
+ err = vk.RequestUnmarshal("fave.getTags", &response, params)
+ return
+}
+
+// FaveMarkSeen method.
+//
+// https://vk.com/dev/fave.markSeen
+func (vk *VK) FaveMarkSeen(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("fave.markSeen", &response, params)
+ return
+}
+
+// FaveRemoveArticle method.
+//
+// https://vk.com/dev/fave.removeArticle
+func (vk *VK) FaveRemoveArticle(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("fave.removeArticle", &response, params)
+ return
+}
+
+// FaveRemoveLink removes link from the user's faves.
+//
+// https://vk.com/dev/fave.removeLink
+func (vk *VK) FaveRemoveLink(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("fave.removeLink", &response, params)
+ return
+}
+
+// FaveRemovePage method.
+//
+// https://vk.com/dev/fave.removePage
+func (vk *VK) FaveRemovePage(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("fave.removePage", &response, params)
+ return
+}
+
+// FaveRemovePost method.
+//
+// https://vk.com/dev/fave.removePost
+func (vk *VK) FaveRemovePost(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("fave.removePost", &response, params)
+ return
+}
+
+// FaveRemoveProduct method.
+//
+// https://vk.com/dev/fave.removeProduct
+func (vk *VK) FaveRemoveProduct(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("fave.removeProduct", &response, params)
+ return
+}
+
+// FaveRemoveTag method.
+//
+// https://vk.com/dev/fave.removeTag
+func (vk *VK) FaveRemoveTag(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("fave.removeTag", &response, params)
+ return
+}
+
+// FaveRemoveVideo method.
+//
+// https://vk.com/dev/fave.removeVideo
+func (vk *VK) FaveRemoveVideo(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("fave.removeVideo", &response, params)
+ return
+}
+
+// FaveReorderTags method.
+//
+// https://vk.com/dev/fave.reorderTags
+func (vk *VK) FaveReorderTags(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("fave.reorderTags", &response, params)
+ return
+}
+
+// FaveSetPageTags method.
+//
+// https://vk.com/dev/fave.setPageTags
+func (vk *VK) FaveSetPageTags(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("fave.setPageTags", &response, params)
+ return
+}
+
+// FaveSetTags method.
+//
+// https://vk.com/dev/fave.setTags
+func (vk *VK) FaveSetTags(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("fave.setTags", &response, params)
+ return
+}
+
+// FaveTrackPageInteraction method.
+//
+// https://vk.com/dev/fave.trackPageInteraction
+func (vk *VK) FaveTrackPageInteraction(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("fave.trackPageInteraction", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/friends.go b/vendor/github.com/SevereCloud/vksdk/v2/api/friends.go
new file mode 100644
index 00000000..07cfc7d7
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/friends.go
@@ -0,0 +1,295 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// FriendsAdd approves or creates a friend request.
+//
+// https://vk.com/dev/friends.add
+func (vk *VK) FriendsAdd(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("friends.add", &response, params)
+ return
+}
+
+// FriendsAddListResponse struct.
+type FriendsAddListResponse struct {
+ ListID int `json:"list_id"`
+}
+
+// FriendsAddList creates a new friend list for the current user.
+//
+// https://vk.com/dev/friends.addList
+func (vk *VK) FriendsAddList(params Params) (response FriendsAddListResponse, err error) {
+ err = vk.RequestUnmarshal("friends.addList", &response, params)
+ return
+}
+
+// FriendsAreFriendsResponse struct.
+type FriendsAreFriendsResponse []object.FriendsFriendStatus
+
+// FriendsAreFriends checks the current user's friendship status with other specified users.
+//
+// https://vk.com/dev/friends.areFriends
+func (vk *VK) FriendsAreFriends(params Params) (response FriendsAreFriendsResponse, err error) {
+ err = vk.RequestUnmarshal("friends.areFriends", &response, params)
+ return
+}
+
+// FriendsDeleteResponse struct.
+type FriendsDeleteResponse struct {
+ Success object.BaseBoolInt `json:"success"`
+ FriendDeleted object.BaseBoolInt `json:"friend_deleted"`
+ OutRequestDeleted object.BaseBoolInt `json:"out_request_deleted"`
+ InRequestDeleted object.BaseBoolInt `json:"in_request_deleted"`
+ SuggestionDeleted object.BaseBoolInt `json:"suggestion_deleted"`
+}
+
+// FriendsDelete declines a friend request or deletes a user from the current user's friend list.
+//
+// https://vk.com/dev/friends.delete
+func (vk *VK) FriendsDelete(params Params) (response FriendsDeleteResponse, err error) {
+ err = vk.RequestUnmarshal("friends.delete", &response, params)
+ return
+}
+
+// FriendsDeleteAllRequests marks all incoming friend requests as viewed.
+//
+// https://vk.com/dev/friends.deleteAllRequests
+func (vk *VK) FriendsDeleteAllRequests(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("friends.deleteAllRequests", &response, params)
+ return
+}
+
+// FriendsDeleteList deletes a friend list of the current user.
+//
+// https://vk.com/dev/friends.deleteList
+func (vk *VK) FriendsDeleteList(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("friends.deleteList", &response, params)
+ return
+}
+
+// FriendsEdit edits the friend lists of the selected user.
+//
+// https://vk.com/dev/friends.edit
+func (vk *VK) FriendsEdit(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("friends.edit", &response, params)
+ return
+}
+
+// FriendsEditList edits a friend list of the current user.
+//
+// https://vk.com/dev/friends.editList
+func (vk *VK) FriendsEditList(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("friends.editList", &response, params)
+ return
+}
+
+// FriendsGetResponse struct.
+type FriendsGetResponse struct {
+ Count int `json:"count"`
+ Items []int `json:"items"`
+}
+
+// FriendsGet returns a list of user IDs or detailed information about a user's friends.
+//
+// https://vk.com/dev/friends.get
+func (vk *VK) FriendsGet(params Params) (response FriendsGetResponse, err error) {
+ err = vk.RequestUnmarshal("friends.get", &response, params)
+ return
+}
+
+// FriendsGetFieldsResponse struct.
+type FriendsGetFieldsResponse struct {
+ Count int `json:"count"`
+ Items []object.FriendsUserXtrLists `json:"items"`
+}
+
+// FriendsGetFields returns a list of user IDs or detailed information about a user's friends.
+//
+// https://vk.com/dev/friends.get
+func (vk *VK) FriendsGetFields(params Params) (response FriendsGetFieldsResponse, err error) {
+ reqParams := make(Params)
+ if v, prs := params["fields"]; v == "" || !prs {
+ reqParams["fields"] = "id"
+ }
+
+ err = vk.RequestUnmarshal("friends.get", &response, params, reqParams)
+
+ return
+}
+
+// FriendsGetAppUsersResponse struct.
+type FriendsGetAppUsersResponse []int
+
+// FriendsGetAppUsers returns a list of IDs of the current user's friends who installed the application.
+//
+// https://vk.com/dev/friends.getAppUsers
+func (vk *VK) FriendsGetAppUsers(params Params) (response FriendsGetAppUsersResponse, err error) {
+ err = vk.RequestUnmarshal("friends.getAppUsers", &response, params)
+ return
+}
+
+// FriendsGetByPhonesResponse struct.
+type FriendsGetByPhonesResponse []object.FriendsUserXtrPhone
+
+// FriendsGetByPhones returns a list of the current user's friends
+// whose phone numbers, validated or specified in a profile, are in a given list.
+//
+// https://vk.com/dev/friends.getByPhones
+func (vk *VK) FriendsGetByPhones(params Params) (response FriendsGetByPhonesResponse, err error) {
+ err = vk.RequestUnmarshal("friends.getByPhones", &response, params)
+ return
+}
+
+// FriendsGetListsResponse struct.
+type FriendsGetListsResponse struct {
+ Count int `json:"count"`
+ Items []object.FriendsFriendsList `json:"items"`
+}
+
+// FriendsGetLists returns a list of the user's friend lists.
+//
+// https://vk.com/dev/friends.getLists
+func (vk *VK) FriendsGetLists(params Params) (response FriendsGetListsResponse, err error) {
+ err = vk.RequestUnmarshal("friends.getLists", &response, params)
+ return
+}
+
+// FriendsGetMutualResponse struct.
+type FriendsGetMutualResponse []int
+
+// FriendsGetMutual returns a list of user IDs of the mutual friends of two users.
+//
+// https://vk.com/dev/friends.getMutual
+func (vk *VK) FriendsGetMutual(params Params) (response FriendsGetMutualResponse, err error) {
+ err = vk.RequestUnmarshal("friends.getMutual", &response, params)
+ return
+}
+
+// FriendsGetOnline returns a list of user IDs of a user's friends who are online.
+//
+// online_mobile=0
+//
+// https://vk.com/dev/friends.getOnline
+func (vk *VK) FriendsGetOnline(params Params) (response []int, err error) {
+ err = vk.RequestUnmarshal("friends.getOnline", &response, params, Params{"online_mobile": false})
+
+ return
+}
+
+// FriendsGetOnlineOnlineMobileResponse struct.
+type FriendsGetOnlineOnlineMobileResponse struct {
+ Online []int `json:"online"`
+ OnlineMobile []int `json:"online_mobile"`
+}
+
+// FriendsGetOnlineOnlineMobile returns a list of user IDs of a user's friends who are online.
+//
+// online_mobile=1
+//
+// https://vk.com/dev/friends.getOnline
+func (vk *VK) FriendsGetOnlineOnlineMobile(params Params) (response FriendsGetOnlineOnlineMobileResponse, err error) {
+ err = vk.RequestUnmarshal("friends.getOnline", &response, params, Params{"online_mobile": true})
+
+ return
+}
+
+// FriendsGetRecentResponse struct.
+type FriendsGetRecentResponse []int
+
+// FriendsGetRecent returns a list of user IDs of the current user's recently added friends.
+//
+// https://vk.com/dev/friends.getRecent
+func (vk *VK) FriendsGetRecent(params Params) (response FriendsGetRecentResponse, err error) {
+ err = vk.RequestUnmarshal("friends.getRecent", &response, params)
+ return
+}
+
+// FriendsGetRequestsResponse struct.
+type FriendsGetRequestsResponse struct {
+ Count int `json:"count"` // Total requests number
+ Items []int `json:"items"`
+}
+
+// FriendsGetRequests returns information about the current user's incoming and outgoing friend requests.
+//
+// https://vk.com/dev/friends.getRequests
+func (vk *VK) FriendsGetRequests(params Params) (response FriendsGetRequestsResponse, err error) {
+ reqParams := Params{
+ "need_mutual": false,
+ "extended": false,
+ }
+
+ err = vk.RequestUnmarshal("friends.getRequests", &response, params, reqParams)
+
+ return
+}
+
+// FriendsGetRequestsNeedMutualResponse struct.
+type FriendsGetRequestsNeedMutualResponse struct {
+ Count int `json:"count"` // Total requests number
+ Items []object.FriendsRequests `json:"items"`
+}
+
+// FriendsGetRequestsNeedMutual returns information about the current user's incoming and outgoing friend requests.
+//
+// https://vk.com/dev/friends.getRequests
+func (vk *VK) FriendsGetRequestsNeedMutual(params Params) (response FriendsGetRequestsNeedMutualResponse, err error) {
+ reqParams := Params{
+ "extended": false,
+ "need_mutual": true,
+ }
+
+ err = vk.RequestUnmarshal("friends.getRequests", &response, params, reqParams)
+
+ return
+}
+
+// FriendsGetRequestsExtendedResponse struct.
+type FriendsGetRequestsExtendedResponse struct {
+ Count int `json:"count"`
+ Items []object.FriendsRequestsXtrMessage `json:"items"`
+}
+
+// FriendsGetRequestsExtended returns information about the current user's incoming and outgoing friend requests.
+//
+// https://vk.com/dev/friends.getRequests
+func (vk *VK) FriendsGetRequestsExtended(params Params) (response FriendsGetRequestsExtendedResponse, err error) {
+ reqParams := Params{
+ "need_mutual": false,
+ "extended": true,
+ }
+
+ err = vk.RequestUnmarshal("friends.getRequests", &response, params, reqParams)
+
+ return
+}
+
+// FriendsGetSuggestionsResponse struct.
+type FriendsGetSuggestionsResponse struct {
+ Count int `json:"count"`
+ Items []object.UsersUser `json:"items"`
+}
+
+// FriendsGetSuggestions returns a list of profiles of users whom the current user may know.
+//
+// https://vk.com/dev/friends.getSuggestions
+func (vk *VK) FriendsGetSuggestions(params Params) (response FriendsGetSuggestionsResponse, err error) {
+ err = vk.RequestUnmarshal("friends.getSuggestions", &response, params)
+ return
+}
+
+// FriendsSearchResponse struct.
+type FriendsSearchResponse struct {
+ Count int `json:"count"`
+ Items []object.UsersUser `json:"items"`
+}
+
+// FriendsSearch returns a list of friends matching the search criteria.
+//
+// https://vk.com/dev/friends.search
+func (vk *VK) FriendsSearch(params Params) (response FriendsSearchResponse, err error) {
+ err = vk.RequestUnmarshal("friends.search", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/gifts.go b/vendor/github.com/SevereCloud/vksdk/v2/api/gifts.go
new file mode 100644
index 00000000..cdcddd94
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/gifts.go
@@ -0,0 +1,32 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import "github.com/SevereCloud/vksdk/v2/object"
+
+// GiftsGetResponse struct.
+type GiftsGetResponse struct {
+ Count int `json:"count"`
+ Items []object.GiftsGift `json:"items"`
+}
+
+// GiftsGet returns a list of user gifts.
+//
+// https://vk.com/dev/gifts.get
+func (vk *VK) GiftsGet(params Params) (response GiftsGetResponse, err error) {
+ err = vk.RequestUnmarshal("gifts.get", &response, params)
+ return
+}
+
+// GiftsGetCatalogResponse struct.
+type GiftsGetCatalogResponse []struct {
+ Name string `json:"name"`
+ Title string `json:"title"`
+ Items []object.GiftsGift `json:"items"`
+}
+
+// GiftsGetCatalog returns catalog.
+//
+// https://vk.com/dev/gifts.get
+func (vk *VK) GiftsGetCatalog(params Params) (response GiftsGetCatalogResponse, err error) {
+ err = vk.RequestUnmarshal("gifts.getCatalog", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/groups.go b/vendor/github.com/SevereCloud/vksdk/v2/api/groups.go
new file mode 100644
index 00000000..72c4143f
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/groups.go
@@ -0,0 +1,712 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// GroupsAddAddressResponse struct.
+type GroupsAddAddressResponse object.GroupsAddress
+
+// GroupsAddAddress groups.addAddress.
+//
+// https://vk.com/dev/groups.addAddress
+func (vk *VK) GroupsAddAddress(params Params) (response GroupsAddAddressResponse, err error) {
+ err = vk.RequestUnmarshal("groups.addAddress", &response, params)
+ return
+}
+
+// GroupsAddCallbackServerResponse struct.
+type GroupsAddCallbackServerResponse struct {
+ ServerID int `json:"server_id"`
+}
+
+// GroupsAddCallbackServer callback API server to the community.
+//
+// https://vk.com/dev/groups.addCallbackServer
+func (vk *VK) GroupsAddCallbackServer(params Params) (response GroupsAddCallbackServerResponse, err error) {
+ err = vk.RequestUnmarshal("groups.addCallbackServer", &response, params)
+ return
+}
+
+// GroupsAddLinkResponse struct.
+type GroupsAddLinkResponse object.GroupsGroupLink
+
+// GroupsAddLink allows to add a link to the community.
+//
+// https://vk.com/dev/groups.addLink
+func (vk *VK) GroupsAddLink(params Params) (response GroupsAddLinkResponse, err error) {
+ err = vk.RequestUnmarshal("groups.addLink", &response, params)
+ return
+}
+
+// GroupsApproveRequest allows to approve join request to the community.
+//
+// https://vk.com/dev/groups.approveRequest
+func (vk *VK) GroupsApproveRequest(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("groups.approveRequest", &response, params)
+ return
+}
+
+// GroupsBan adds a user or a group to the community blacklist.
+//
+// https://vk.com/dev/groups.ban
+func (vk *VK) GroupsBan(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("groups.ban", &response, params)
+ return
+}
+
+// GroupsCreateResponse struct.
+type GroupsCreateResponse object.GroupsGroup
+
+// GroupsCreate creates a new community.
+//
+// https://vk.com/dev/groups.create
+func (vk *VK) GroupsCreate(params Params) (response GroupsCreateResponse, err error) {
+ err = vk.RequestUnmarshal("groups.create", &response, params)
+ return
+}
+
+// GroupsDeleteAddress groups.deleteAddress.
+//
+// https://vk.com/dev/groups.deleteAddress
+func (vk *VK) GroupsDeleteAddress(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("groups.deleteAddress", &response, params)
+ return
+}
+
+// GroupsDeleteCallbackServer callback API server from the community.
+//
+// https://vk.com/dev/groups.deleteCallbackServer
+func (vk *VK) GroupsDeleteCallbackServer(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("groups.deleteCallbackServer", &response, params)
+ return
+}
+
+// GroupsDeleteLink allows to delete a link from the community.
+//
+// https://vk.com/dev/groups.deleteLink
+func (vk *VK) GroupsDeleteLink(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("groups.deleteLink", &response, params)
+ return
+}
+
+// GroupsDisableOnline disables "online" status in the community.
+//
+// https://vk.com/dev/groups.disableOnline
+func (vk *VK) GroupsDisableOnline(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("groups.disableOnline", &response, params)
+ return
+}
+
+// GroupsEdit edits a community.
+//
+// https://vk.com/dev/groups.edit
+func (vk *VK) GroupsEdit(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("groups.edit", &response, params)
+ return
+}
+
+// GroupsEditAddressResponse struct.
+type GroupsEditAddressResponse object.GroupsAddress
+
+// GroupsEditAddress groups.editAddress.
+//
+// https://vk.com/dev/groups.editAddress
+func (vk *VK) GroupsEditAddress(params Params) (response GroupsEditAddressResponse, err error) {
+ err = vk.RequestUnmarshal("groups.editAddress", &response, params)
+ return
+}
+
+// GroupsEditCallbackServer edits Callback API server in the community.
+//
+// https://vk.com/dev/groups.editCallbackServer
+func (vk *VK) GroupsEditCallbackServer(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("groups.editCallbackServer", &response, params)
+ return
+}
+
+// GroupsEditLink allows to edit a link in the community.
+//
+// https://vk.com/dev/groups.editLink
+func (vk *VK) GroupsEditLink(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("groups.editLink", &response, params)
+ return
+}
+
+// GroupsEditManager allows to add, remove or edit the community manager .
+//
+// https://vk.com/dev/groups.editManager
+func (vk *VK) GroupsEditManager(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("groups.editManager", &response, params)
+ return
+}
+
+// GroupsEnableOnline enables "online" status in the community.
+//
+// https://vk.com/dev/groups.enableOnline
+func (vk *VK) GroupsEnableOnline(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("groups.enableOnline", &response, params)
+ return
+}
+
+// GroupsGetResponse struct.
+type GroupsGetResponse struct {
+ Count int `json:"count"`
+ Items []int `json:"items"`
+}
+
+// GroupsGet returns a list of the communities to which a user belongs.
+//
+// extended=0
+//
+// https://vk.com/dev/groups.get
+func (vk *VK) GroupsGet(params Params) (response GroupsGetResponse, err error) {
+ err = vk.RequestUnmarshal("groups.get", &response, params, Params{"extended": false})
+
+ return
+}
+
+// GroupsGetExtendedResponse struct.
+type GroupsGetExtendedResponse struct {
+ Count int `json:"count"`
+ Items []object.GroupsGroup `json:"items"`
+}
+
+// GroupsGetExtended returns a list of the communities to which a user belongs.
+//
+// extended=1
+//
+// https://vk.com/dev/groups.get
+func (vk *VK) GroupsGetExtended(params Params) (response GroupsGetExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("groups.get", &response, params, Params{"extended": true})
+
+ return
+}
+
+// GroupsGetAddressesResponse struct.
+type GroupsGetAddressesResponse struct {
+ Count int `json:"count"`
+ Items []object.GroupsAddress `json:"items"`
+}
+
+// GroupsGetAddresses groups.getAddresses.
+//
+// https://vk.com/dev/groups.getAddresses
+func (vk *VK) GroupsGetAddresses(params Params) (response GroupsGetAddressesResponse, err error) {
+ err = vk.RequestUnmarshal("groups.getAddresses", &response, params)
+ return
+}
+
+// GroupsGetBannedResponse struct.
+type GroupsGetBannedResponse struct {
+ Count int `json:"count"`
+ Items []object.GroupsOwnerXtrBanInfo `json:"items"`
+}
+
+// GroupsGetBanned returns a list of users on a community blacklist.
+//
+// https://vk.com/dev/groups.getBanned
+func (vk *VK) GroupsGetBanned(params Params) (response GroupsGetBannedResponse, err error) {
+ err = vk.RequestUnmarshal("groups.getBanned", &response, params)
+ return
+}
+
+// GroupsGetByIDResponse struct.
+type GroupsGetByIDResponse []object.GroupsGroup
+
+// GroupsGetByID returns information about communities by their IDs.
+//
+// https://vk.com/dev/groups.getById
+func (vk *VK) GroupsGetByID(params Params) (response GroupsGetByIDResponse, err error) {
+ err = vk.RequestUnmarshal("groups.getById", &response, params)
+ return
+}
+
+// GroupsGetCallbackConfirmationCodeResponse struct.
+type GroupsGetCallbackConfirmationCodeResponse struct {
+ Code string `json:"code"`
+}
+
+// GroupsGetCallbackConfirmationCode returns Callback API confirmation code for the community.
+//
+// https://vk.com/dev/groups.getCallbackConfirmationCode
+func (vk *VK) GroupsGetCallbackConfirmationCode(params Params) (
+ response GroupsGetCallbackConfirmationCodeResponse,
+ err error,
+) {
+ err = vk.RequestUnmarshal("groups.getCallbackConfirmationCode", &response, params)
+ return
+}
+
+// GroupsGetCallbackServersResponse struct.
+type GroupsGetCallbackServersResponse struct {
+ Count int `json:"count"`
+ Items []object.GroupsCallbackServer `json:"items"`
+}
+
+// GroupsGetCallbackServers receives a list of Callback API servers from the community.
+//
+// https://vk.com/dev/groups.getCallbackServers
+func (vk *VK) GroupsGetCallbackServers(params Params) (response GroupsGetCallbackServersResponse, err error) {
+ err = vk.RequestUnmarshal("groups.getCallbackServers", &response, params)
+ return
+}
+
+// GroupsGetCallbackSettingsResponse struct.
+type GroupsGetCallbackSettingsResponse object.GroupsCallbackSettings
+
+// GroupsGetCallbackSettings returns Callback API notifications settings.
+//
+// BUG(VK): MessageEdit always 0 https://vk.com/bugtracker?act=show&id=86762
+//
+// https://vk.com/dev/groups.getCallbackSettings
+func (vk *VK) GroupsGetCallbackSettings(params Params) (response GroupsGetCallbackSettingsResponse, err error) {
+ err = vk.RequestUnmarshal("groups.getCallbackSettings", &response, params)
+ return
+}
+
+// GroupsGetCatalogResponse struct.
+type GroupsGetCatalogResponse struct {
+ Count int `json:"count"`
+ Items []object.GroupsGroup `json:"items"`
+}
+
+// GroupsGetCatalog returns communities list for a catalog category.
+//
+// https://vk.com/dev/groups.getCatalog
+func (vk *VK) GroupsGetCatalog(params Params) (response GroupsGetCatalogResponse, err error) {
+ err = vk.RequestUnmarshal("groups.getCatalog", &response, params)
+ return
+}
+
+// GroupsGetCatalogInfoResponse struct.
+type GroupsGetCatalogInfoResponse struct {
+ Enabled object.BaseBoolInt `json:"enabled"`
+ Categories []object.GroupsGroupCategory `json:"categories"`
+}
+
+// GroupsGetCatalogInfo returns categories list for communities catalog.
+//
+// extended=0
+//
+// https://vk.com/dev/groups.getCatalogInfo
+func (vk *VK) GroupsGetCatalogInfo(params Params) (response GroupsGetCatalogInfoResponse, err error) {
+ err = vk.RequestUnmarshal("groups.getCatalogInfo", &response, params, Params{"extended": false})
+
+ return
+}
+
+// GroupsGetCatalogInfoExtendedResponse struct.
+type GroupsGetCatalogInfoExtendedResponse struct {
+ Enabled object.BaseBoolInt `json:"enabled"`
+ Categories []object.GroupsGroupCategoryFull `json:"categories"`
+}
+
+// GroupsGetCatalogInfoExtended returns categories list for communities catalog.
+//
+// extended=1
+//
+// https://vk.com/dev/groups.getCatalogInfo
+func (vk *VK) GroupsGetCatalogInfoExtended(params Params) (response GroupsGetCatalogInfoExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("groups.getCatalogInfo", &response, params, Params{"extended": true})
+
+ return
+}
+
+// GroupsGetInvitedUsersResponse struct.
+type GroupsGetInvitedUsersResponse struct {
+ Count int `json:"count"`
+ Items []object.UsersUser `json:"items"`
+}
+
+// GroupsGetInvitedUsers returns invited users list of a community.
+//
+// https://vk.com/dev/groups.getInvitedUsers
+func (vk *VK) GroupsGetInvitedUsers(params Params) (response GroupsGetInvitedUsersResponse, err error) {
+ err = vk.RequestUnmarshal("groups.getInvitedUsers", &response, params)
+ return
+}
+
+// GroupsGetInvitesResponse struct.
+type GroupsGetInvitesResponse struct {
+ Count int `json:"count"`
+ Items []object.GroupsGroupXtrInvitedBy `json:"items"`
+}
+
+// GroupsGetInvites returns a list of invitations to join communities and events.
+//
+// https://vk.com/dev/groups.getInvites
+func (vk *VK) GroupsGetInvites(params Params) (response GroupsGetInvitesResponse, err error) {
+ err = vk.RequestUnmarshal("groups.getInvites", &response, params)
+ return
+}
+
+// GroupsGetInvitesExtendedResponse struct.
+type GroupsGetInvitesExtendedResponse struct {
+ Count int `json:"count"`
+ Items []object.GroupsGroupXtrInvitedBy `json:"items"`
+ object.ExtendedResponse
+}
+
+// GroupsGetInvitesExtended returns a list of invitations to join communities and events.
+//
+// https://vk.com/dev/groups.getInvites
+func (vk *VK) GroupsGetInvitesExtended(params Params) (response GroupsGetInvitesExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("groups.getInvites", &response, params)
+ return
+}
+
+// GroupsGetLongPollServerResponse struct.
+type GroupsGetLongPollServerResponse object.GroupsLongPollServer
+
+// GroupsGetLongPollServer returns data for Bots Long Poll API connection.
+//
+// https://vk.com/dev/groups.getLongPollServer
+func (vk *VK) GroupsGetLongPollServer(params Params) (response GroupsGetLongPollServerResponse, err error) {
+ err = vk.RequestUnmarshal("groups.getLongPollServer", &response, params)
+ return
+}
+
+// GroupsGetLongPollSettingsResponse struct.
+type GroupsGetLongPollSettingsResponse object.GroupsLongPollSettings
+
+// GroupsGetLongPollSettings returns Bots Long Poll API settings.
+//
+// https://vk.com/dev/groups.getLongPollSettings
+func (vk *VK) GroupsGetLongPollSettings(params Params) (response GroupsGetLongPollSettingsResponse, err error) {
+ err = vk.RequestUnmarshal("groups.getLongPollSettings", &response, params)
+ return
+}
+
+// GroupsGetMembersResponse struct.
+type GroupsGetMembersResponse struct {
+ Count int `json:"count"`
+ Items []int `json:"items"`
+}
+
+// GroupsGetMembers returns a list of community members.
+//
+// https://vk.com/dev/groups.getMembers
+func (vk *VK) GroupsGetMembers(params Params) (response GroupsGetMembersResponse, err error) {
+ err = vk.RequestUnmarshal("groups.getMembers", &response, params, Params{"filter": ""})
+
+ return
+}
+
+// GroupsGetMembersFieldsResponse struct.
+type GroupsGetMembersFieldsResponse struct {
+ Count int `json:"count"`
+ Items []object.UsersUser `json:"items"`
+}
+
+// GroupsGetMembersFields returns a list of community members.
+//
+// https://vk.com/dev/groups.getMembers
+func (vk *VK) GroupsGetMembersFields(params Params) (response GroupsGetMembersFieldsResponse, err error) {
+ reqParams := make(Params)
+ if v, prs := params["fields"]; v == "" || !prs {
+ reqParams["fields"] = "id"
+ }
+
+ err = vk.RequestUnmarshal("groups.getMembers", &response, params, reqParams)
+
+ return
+}
+
+// GroupsGetMembersFilterManagersResponse struct.
+type GroupsGetMembersFilterManagersResponse struct {
+ Count int `json:"count"`
+ Items []object.GroupsMemberRoleXtrUsersUser `json:"items"`
+}
+
+// GroupsGetMembersFilterManagers returns a list of community members.
+//
+// filter=managers
+//
+// https://vk.com/dev/groups.getMembers
+func (vk *VK) GroupsGetMembersFilterManagers(params Params) (
+ response GroupsGetMembersFilterManagersResponse,
+ err error,
+) {
+ err = vk.RequestUnmarshal("groups.getMembers", &response, params, Params{"filter": "managers"})
+
+ return
+}
+
+// GroupsGetOnlineStatusResponse struct.
+type GroupsGetOnlineStatusResponse object.GroupsOnlineStatus
+
+// GroupsGetOnlineStatus returns a community's online status.
+//
+// https://vk.com/dev/groups.getOnlineStatus
+func (vk *VK) GroupsGetOnlineStatus(params Params) (response GroupsGetOnlineStatusResponse, err error) {
+ err = vk.RequestUnmarshal("groups.getOnlineStatus", &response, params)
+ return
+}
+
+// GroupsGetRequestsResponse struct.
+type GroupsGetRequestsResponse struct {
+ Count int `json:"count"`
+ Items []int `json:"items"`
+}
+
+// GroupsGetRequests returns a list of requests to the community.
+//
+// https://vk.com/dev/groups.getRequests
+func (vk *VK) GroupsGetRequests(params Params) (response GroupsGetRequestsResponse, err error) {
+ err = vk.RequestUnmarshal("groups.getRequests", &response, params, Params{"fields": ""})
+
+ return
+}
+
+// GroupsGetRequestsFieldsResponse struct.
+type GroupsGetRequestsFieldsResponse struct {
+ Count int `json:"count"`
+ Items []object.UsersUser `json:"items"`
+}
+
+// GroupsGetRequestsFields returns a list of requests to the community.
+//
+// https://vk.com/dev/groups.getRequests
+func (vk *VK) GroupsGetRequestsFields(params Params) (response GroupsGetRequestsFieldsResponse, err error) {
+ reqParams := make(Params)
+ if v, prs := params["fields"]; v == "" || !prs {
+ reqParams["fields"] = "id"
+ }
+
+ err = vk.RequestUnmarshal("groups.getRequests", &response, params, reqParams)
+
+ return
+}
+
+// GroupsGetSettingsResponse struct.
+type GroupsGetSettingsResponse object.GroupsGroupSettings
+
+// GroupsGetSettings returns community settings.
+//
+// https://vk.com/dev/groups.getSettings
+func (vk *VK) GroupsGetSettings(params Params) (response GroupsGetSettingsResponse, err error) {
+ err = vk.RequestUnmarshal("groups.getSettings", &response, params)
+ return
+}
+
+// GroupsGetTagListResponse struct.
+type GroupsGetTagListResponse []object.GroupsTag
+
+// GroupsGetTagList returns community tags list.
+//
+// https://vk.com/dev/groups.getTagList
+func (vk *VK) GroupsGetTagList(params Params) (response GroupsGetTagListResponse, err error) {
+ err = vk.RequestUnmarshal("groups.getTagList", &response, params)
+ return
+}
+
+// GroupsGetTokenPermissionsResponse struct.
+type GroupsGetTokenPermissionsResponse object.GroupsTokenPermissions
+
+// GroupsGetTokenPermissions returns permissions scope for the community's access_token.
+//
+// https://vk.com/dev/groups.getTokenPermissions
+func (vk *VK) GroupsGetTokenPermissions(params Params) (response GroupsGetTokenPermissionsResponse, err error) {
+ err = vk.RequestUnmarshal("groups.getTokenPermissions", &response, params)
+ return
+}
+
+// GroupsInvite allows to invite friends to the community.
+//
+// https://vk.com/dev/groups.invite
+func (vk *VK) GroupsInvite(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("groups.invite", &response, params)
+ return
+}
+
+// GroupsIsMember returns information specifying whether a user is a member of a community.
+//
+// extended=0
+//
+// https://vk.com/dev/groups.isMember
+func (vk *VK) GroupsIsMember(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("groups.isMember", &response, params, Params{"extended": false})
+
+ return
+}
+
+// GroupsIsMemberExtendedResponse struct.
+type GroupsIsMemberExtendedResponse struct {
+ Invitation object.BaseBoolInt `json:"invitation"` // Information whether user has been invited to the group
+ Member object.BaseBoolInt `json:"member"` // Information whether user is a member of the group
+ Request object.BaseBoolInt `json:"request"` // Information whether user has send request to the group
+ CanInvite object.BaseBoolInt `json:"can_invite"` // Information whether user can be invite
+ CanRecall object.BaseBoolInt `json:"can_recall"` // Information whether user's invite to the group can be recalled
+}
+
+// GroupsIsMemberExtended returns information specifying whether a user is a member of a community.
+//
+// extended=1
+//
+// https://vk.com/dev/groups.isMember
+func (vk *VK) GroupsIsMemberExtended(params Params) (response GroupsIsMemberExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("groups.isMember", &response, params, Params{"extended": true})
+
+ return
+}
+
+// GroupsIsMemberUserIDsExtendedResponse struct.
+type GroupsIsMemberUserIDsExtendedResponse []object.GroupsMemberStatusFull
+
+// GroupsIsMemberUserIDsExtended returns information specifying whether a user is a member of a community.
+//
+// extended=1
+// need user_ids
+//
+// https://vk.com/dev/groups.isMember
+func (vk *VK) GroupsIsMemberUserIDsExtended(params Params) (response GroupsIsMemberUserIDsExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("groups.isMember", &response, params, Params{"extended": true})
+
+ return
+}
+
+// GroupsIsMemberUserIDsResponse struct.
+type GroupsIsMemberUserIDsResponse []object.GroupsMemberStatus
+
+// GroupsIsMemberUserIDs returns information specifying whether a user is a member of a community.
+//
+// extended=0
+// need user_ids
+//
+// https://vk.com/dev/groups.isMember
+func (vk *VK) GroupsIsMemberUserIDs(params Params) (response GroupsIsMemberUserIDsResponse, err error) {
+ err = vk.RequestUnmarshal("groups.isMember", &response, params, Params{"extended": false})
+
+ return
+}
+
+// GroupsJoin with this method you can join the group or public page, and also confirm your participation in an event.
+//
+// https://vk.com/dev/groups.join
+func (vk *VK) GroupsJoin(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("groups.join", &response, params)
+ return
+}
+
+// GroupsLeave with this method you can leave a group, public page, or event.
+//
+// https://vk.com/dev/groups.leave
+func (vk *VK) GroupsLeave(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("groups.leave", &response, params)
+ return
+}
+
+// GroupsRemoveUser removes a user from the community.
+//
+// https://vk.com/dev/groups.removeUser
+func (vk *VK) GroupsRemoveUser(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("groups.removeUser", &response, params)
+ return
+}
+
+// GroupsReorderLink allows to reorder links in the community.
+//
+// https://vk.com/dev/groups.reorderLink
+func (vk *VK) GroupsReorderLink(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("groups.reorderLink", &response, params)
+ return
+}
+
+// GroupsSearchResponse struct.
+type GroupsSearchResponse struct {
+ Count int `json:"count"`
+ Items []object.GroupsGroup `json:"items"`
+}
+
+// GroupsSearch returns a list of communities matching the search criteria.
+//
+// https://vk.com/dev/groups.search
+func (vk *VK) GroupsSearch(params Params) (response GroupsSearchResponse, err error) {
+ err = vk.RequestUnmarshal("groups.search", &response, params)
+ return
+}
+
+// GroupsSetCallbackSettings allow to set notifications settings for Callback API.
+//
+// https://vk.com/dev/groups.setCallbackSettings
+func (vk *VK) GroupsSetCallbackSettings(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("groups.setCallbackSettings", &response, params)
+ return
+}
+
+// GroupsSetLongPollSettings allows to set Bots Long Poll API settings in the community.
+//
+// https://vk.com/dev/groups.setLongPollSettings
+func (vk *VK) GroupsSetLongPollSettings(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("groups.setLongPollSettings", &response, params)
+ return
+}
+
+// GroupsSetSettings sets community settings.
+//
+// https://vk.com/dev/groups.setSettings
+func (vk *VK) GroupsSetSettings(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("groups.setSettings", &response, params)
+ return
+}
+
+// GroupsSetUserNote allows to create or edit a note about a user as part
+// of the user's correspondence with the community.
+//
+// https://vk.com/dev/groups.setUserNote
+func (vk *VK) GroupsSetUserNote(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("groups.setUserNote", &response, params)
+ return
+}
+
+// GroupsTagAdd allows to add a new tag to the community.
+//
+// https://vk.com/dev/groups.tagAdd
+func (vk *VK) GroupsTagAdd(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("groups.tagAdd", &response, params)
+ return
+}
+
+// GroupsTagBind allows to "bind" and "unbind" community tags to conversations.
+//
+// https://vk.com/dev/groups.tagBind
+func (vk *VK) GroupsTagBind(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("groups.tagBind", &response, params)
+ return
+}
+
+// GroupsTagDelete allows to remove a community tag
+//
+// The remote tag will be automatically "unbind" from all conversations to
+// which it was "bind" earlier.
+//
+// https://vk.com/dev/groups.tagDelete
+func (vk *VK) GroupsTagDelete(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("groups.tagDelete", &response, params)
+ return
+}
+
+// GroupsTagUpdate allows to change an existing tag.
+//
+// https://vk.com/dev/groups.tagUpdate
+func (vk *VK) GroupsTagUpdate(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("groups.tagUpdate", &response, params)
+ return
+}
+
+// GroupsToggleMarket method.
+//
+// https://vk.com/dev/groups.toggleMarket
+func (vk *VK) GroupsToggleMarket(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("groups.toggleMarket", &response, params)
+ return
+}
+
+// GroupsUnban groups.unban.
+//
+// https://vk.com/dev/groups.unban
+func (vk *VK) GroupsUnban(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("groups.unban", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/leadforms.go b/vendor/github.com/SevereCloud/vksdk/v2/api/leadforms.go
new file mode 100644
index 00000000..a79c5cd3
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/leadforms.go
@@ -0,0 +1,89 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// LeadFormsCreateResponse struct.
+type LeadFormsCreateResponse struct {
+ FormID int `json:"form_id"`
+ URL string `json:"url"`
+}
+
+// LeadFormsCreate leadForms.create.
+//
+// https://vk.com/dev/leadForms.create
+func (vk *VK) LeadFormsCreate(params Params) (response LeadFormsCreateResponse, err error) {
+ err = vk.RequestUnmarshal("leadForms.create", &response, params)
+ return
+}
+
+// LeadFormsDeleteResponse struct.
+type LeadFormsDeleteResponse struct {
+ FormID int `json:"form_id"`
+}
+
+// LeadFormsDelete leadForms.delete.
+//
+// https://vk.com/dev/leadForms.delete
+func (vk *VK) LeadFormsDelete(params Params) (response LeadFormsDeleteResponse, err error) {
+ err = vk.RequestUnmarshal("leadForms.delete", &response, params)
+ return
+}
+
+// LeadFormsGetResponse struct.
+type LeadFormsGetResponse object.LeadFormsForm
+
+// LeadFormsGet leadForms.get.
+//
+// https://vk.com/dev/leadForms.get
+func (vk *VK) LeadFormsGet(params Params) (response LeadFormsGetResponse, err error) {
+ err = vk.RequestUnmarshal("leadForms.get", &response, params)
+ return
+}
+
+// LeadFormsGetLeadsResponse struct.
+type LeadFormsGetLeadsResponse struct {
+ Leads []object.LeadFormsLead `json:"leads"`
+}
+
+// LeadFormsGetLeads leadForms.getLeads.
+//
+// https://vk.com/dev/leadForms.getLeads
+func (vk *VK) LeadFormsGetLeads(params Params) (response LeadFormsGetLeadsResponse, err error) {
+ err = vk.RequestUnmarshal("leadForms.getLeads", &response, params)
+ return
+}
+
+// LeadFormsGetUploadURL leadForms.getUploadURL.
+//
+// https://vk.com/dev/leadForms.getUploadURL
+func (vk *VK) LeadFormsGetUploadURL(params Params) (response string, err error) {
+ err = vk.RequestUnmarshal("leadForms.getUploadURL", &response, params)
+ return
+}
+
+// LeadFormsListResponse struct.
+type LeadFormsListResponse []object.LeadFormsForm
+
+// LeadFormsList leadForms.list.
+//
+// https://vk.com/dev/leadForms.list
+func (vk *VK) LeadFormsList(params Params) (response LeadFormsListResponse, err error) {
+ err = vk.RequestUnmarshal("leadForms.list", &response, params)
+ return
+}
+
+// LeadFormsUpdateResponse struct.
+type LeadFormsUpdateResponse struct {
+ FormID int `json:"form_id"`
+ URL string `json:"url"`
+}
+
+// LeadFormsUpdate leadForms.update.
+//
+// https://vk.com/dev/leadForms.update
+func (vk *VK) LeadFormsUpdate(params Params) (response LeadFormsUpdateResponse, err error) {
+ err = vk.RequestUnmarshal("leadForms.update", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/leads.go b/vendor/github.com/SevereCloud/vksdk/v2/api/leads.go
new file mode 100644
index 00000000..e01e7a92
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/leads.go
@@ -0,0 +1,74 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// LeadsCheckUserResponse struct.
+type LeadsCheckUserResponse object.LeadsChecked
+
+// LeadsCheckUser checks if the user can start the lead.
+//
+// https://vk.com/dev/leads.checkUser
+func (vk *VK) LeadsCheckUser(params Params) (response LeadsCheckUserResponse, err error) {
+ err = vk.RequestUnmarshal("leads.checkUser", &response, params)
+ return
+}
+
+// LeadsCompleteResponse struct.
+type LeadsCompleteResponse object.LeadsComplete
+
+// LeadsComplete completes the lead started by user.
+//
+// https://vk.com/dev/leads.complete
+func (vk *VK) LeadsComplete(params Params) (response LeadsCompleteResponse, err error) {
+ err = vk.RequestUnmarshal("leads.complete", &response, params)
+ return
+}
+
+// LeadsGetStatsResponse struct.
+type LeadsGetStatsResponse object.LeadsLead
+
+// LeadsGetStats returns lead stats data.
+//
+// https://vk.com/dev/leads.getStats
+func (vk *VK) LeadsGetStats(params Params) (response LeadsGetStatsResponse, err error) {
+ err = vk.RequestUnmarshal("leads.getStats", &response, params)
+ return
+}
+
+// LeadsGetUsersResponse struct.
+type LeadsGetUsersResponse object.LeadsEntry
+
+// LeadsGetUsers returns a list of last user actions for the offer.
+//
+// https://vk.com/dev/leads.getUsers
+func (vk *VK) LeadsGetUsers(params Params) (response LeadsGetUsersResponse, err error) {
+ err = vk.RequestUnmarshal("leads.getUsers", &response, params)
+ return
+}
+
+// LeadsMetricHitResponse struct.
+type LeadsMetricHitResponse struct {
+ Result object.BaseBoolInt `json:"result"` // Information whether request has been processed successfully
+ RedirectLink string `json:"redirect_link"` // Redirect link
+}
+
+// LeadsMetricHit counts the metric event.
+//
+// https://vk.com/dev/leads.metricHit
+func (vk *VK) LeadsMetricHit(params Params) (response LeadsMetricHitResponse, err error) {
+ err = vk.RequestUnmarshal("leads.metricHit", &response, params)
+ return
+}
+
+// LeadsStartResponse struct.
+type LeadsStartResponse object.LeadsStart
+
+// LeadsStart creates new session for the user passing the offer.
+//
+// https://vk.com/dev/leads.start
+func (vk *VK) LeadsStart(params Params) (response LeadsStartResponse, err error) {
+ err = vk.RequestUnmarshal("leads.start", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/likes.go b/vendor/github.com/SevereCloud/vksdk/v2/api/likes.go
new file mode 100644
index 00000000..047c2935
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/likes.go
@@ -0,0 +1,79 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// LikesAddResponse struct.
+type LikesAddResponse struct {
+ Likes int `json:"likes"`
+}
+
+// LikesAdd adds the specified object to the Likes list of the current user.
+//
+// https://vk.com/dev/likes.add
+func (vk *VK) LikesAdd(params Params) (response LikesAddResponse, err error) {
+ err = vk.RequestUnmarshal("likes.add", &response, params)
+ return
+}
+
+// LikesDeleteResponse struct.
+type LikesDeleteResponse struct {
+ Likes int `json:"likes"`
+}
+
+// LikesDelete deletes the specified object from the Likes list of the current user.
+//
+// https://vk.com/dev/likes.delete
+func (vk *VK) LikesDelete(params Params) (response LikesDeleteResponse, err error) {
+ err = vk.RequestUnmarshal("likes.delete", &response, params)
+ return
+}
+
+// LikesGetListResponse struct.
+type LikesGetListResponse struct {
+ Count int `json:"count"`
+ Items []int `json:"items"`
+}
+
+// LikesGetList likes.getList returns a list of IDs of users who added the specified object to their Likes list.
+//
+// extended=0
+//
+// https://vk.com/dev/likes.getList
+func (vk *VK) LikesGetList(params Params) (response LikesGetListResponse, err error) {
+ err = vk.RequestUnmarshal("likes.getList", &response, params, Params{"extended": false})
+
+ return
+}
+
+// LikesGetListExtendedResponse struct.
+type LikesGetListExtendedResponse struct {
+ Count int `json:"count"`
+ Items []object.UsersUser `json:"items"`
+}
+
+// LikesGetListExtended likes.getList returns a list of IDs of users who added the specified object to their Likes list.
+//
+// extended=1
+//
+// https://vk.com/dev/likes.getList
+func (vk *VK) LikesGetListExtended(params Params) (response LikesGetListExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("likes.getList", &response, params, Params{"extended": true})
+
+ return
+}
+
+// LikesIsLikedResponse struct.
+type LikesIsLikedResponse struct {
+ Liked object.BaseBoolInt `json:"liked"`
+ Copied object.BaseBoolInt `json:"copied"`
+}
+
+// LikesIsLiked checks for the object in the Likes list of the specified user.
+//
+// https://vk.com/dev/likes.isLiked
+func (vk *VK) LikesIsLiked(params Params) (response LikesIsLikedResponse, err error) {
+ err = vk.RequestUnmarshal("likes.isLiked", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/market.go b/vendor/github.com/SevereCloud/vksdk/v2/api/market.go
new file mode 100644
index 00000000..dc140a86
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/market.go
@@ -0,0 +1,319 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// MarketAddResponse struct.
+type MarketAddResponse struct {
+ MarketItemID int `json:"market_item_id"` // Item ID
+}
+
+// MarketAdd adds a new item to the market.
+//
+// https://vk.com/dev/market.add
+func (vk *VK) MarketAdd(params Params) (response MarketAddResponse, err error) {
+ err = vk.RequestUnmarshal("market.add", &response, params)
+ return
+}
+
+// MarketAddAlbumResponse struct.
+type MarketAddAlbumResponse struct {
+ MarketAlbumID int `json:"market_album_id"` // Album ID
+}
+
+// MarketAddAlbum creates new collection of items.
+//
+// https://vk.com/dev/market.addAlbum
+func (vk *VK) MarketAddAlbum(params Params) (response MarketAddAlbumResponse, err error) {
+ err = vk.RequestUnmarshal("market.addAlbum", &response, params)
+ return
+}
+
+// MarketAddToAlbum adds an item to one or multiple collections.
+//
+// https://vk.com/dev/market.addToAlbum
+func (vk *VK) MarketAddToAlbum(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("market.addToAlbum", &response, params)
+ return
+}
+
+// MarketCreateComment creates a new comment for an item.
+//
+// https://vk.com/dev/market.createComment
+func (vk *VK) MarketCreateComment(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("market.createComment", &response, params)
+ return
+}
+
+// MarketDelete deletes an item.
+//
+// https://vk.com/dev/market.delete
+func (vk *VK) MarketDelete(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("market.delete", &response, params)
+ return
+}
+
+// MarketDeleteAlbum deletes a collection of items.
+//
+// https://vk.com/dev/market.deleteAlbum
+func (vk *VK) MarketDeleteAlbum(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("market.deleteAlbum", &response, params)
+ return
+}
+
+// MarketDeleteComment deletes an item's comment.
+//
+// https://vk.com/dev/market.deleteComment
+func (vk *VK) MarketDeleteComment(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("market.deleteComment", &response, params)
+ return
+}
+
+// MarketEdit edits an item.
+//
+// https://vk.com/dev/market.edit
+func (vk *VK) MarketEdit(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("market.edit", &response, params)
+ return
+}
+
+// MarketEditAlbum edits a collection of items.
+//
+// https://vk.com/dev/market.editAlbum
+func (vk *VK) MarketEditAlbum(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("market.editAlbum", &response, params)
+ return
+}
+
+// MarketEditComment changes item comment's text.
+//
+// https://vk.com/dev/market.editComment
+func (vk *VK) MarketEditComment(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("market.editComment", &response, params)
+ return
+}
+
+// MarketEditOrder edits an order.
+//
+// https://vk.com/dev/market.editOrder
+func (vk *VK) MarketEditOrder(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("market.editOrder", &response, params)
+ return
+}
+
+// MarketGetResponse struct.
+type MarketGetResponse struct {
+ Count int `json:"count"`
+ Items []object.MarketMarketItem `json:"items"`
+}
+
+// MarketGet returns items list for a community.
+//
+// https://vk.com/dev/market.get
+func (vk *VK) MarketGet(params Params) (response MarketGetResponse, err error) {
+ err = vk.RequestUnmarshal("market.get", &response, params)
+ return
+}
+
+// MarketGetAlbumByIDResponse struct.
+type MarketGetAlbumByIDResponse struct {
+ Count int `json:"count"`
+ Items []object.MarketMarketAlbum `json:"items"`
+}
+
+// MarketGetAlbumByID returns items album's data.
+//
+// https://vk.com/dev/market.getAlbumById
+func (vk *VK) MarketGetAlbumByID(params Params) (response MarketGetAlbumByIDResponse, err error) {
+ err = vk.RequestUnmarshal("market.getAlbumById", &response, params)
+ return
+}
+
+// MarketGetAlbumsResponse struct.
+type MarketGetAlbumsResponse struct {
+ Count int `json:"count"`
+ Items []object.MarketMarketAlbum `json:"items"`
+}
+
+// MarketGetAlbums returns community's collections list.
+//
+// https://vk.com/dev/market.getAlbums
+func (vk *VK) MarketGetAlbums(params Params) (response MarketGetAlbumsResponse, err error) {
+ err = vk.RequestUnmarshal("market.getAlbums", &response, params)
+ return
+}
+
+// MarketGetByIDResponse struct.
+type MarketGetByIDResponse struct {
+ Count int `json:"count"`
+ Items []object.MarketMarketItem `json:"items"`
+}
+
+// MarketGetByID returns information about market items by their iDs.
+//
+// https://vk.com/dev/market.getById
+func (vk *VK) MarketGetByID(params Params) (response MarketGetByIDResponse, err error) {
+ err = vk.RequestUnmarshal("market.getById", &response, params)
+ return
+}
+
+// MarketGetCategoriesResponse struct.
+type MarketGetCategoriesResponse struct {
+ Count int `json:"count"`
+ Items []object.MarketMarketCategory `json:"items"`
+}
+
+// MarketGetCategories returns a list of market categories.
+//
+// https://vk.com/dev/market.getCategories
+func (vk *VK) MarketGetCategories(params Params) (response MarketGetCategoriesResponse, err error) {
+ err = vk.RequestUnmarshal("market.getCategories", &response, params)
+ return
+}
+
+// MarketGetCommentsResponse struct.
+type MarketGetCommentsResponse struct {
+ Count int `json:"count"`
+ Items []object.WallWallComment `json:"items"`
+}
+
+// MarketGetComments returns comments list for an item.
+//
+// extended=0
+//
+// https://vk.com/dev/market.getComments
+func (vk *VK) MarketGetComments(params Params) (response MarketGetCommentsResponse, err error) {
+ err = vk.RequestUnmarshal("market.getComments", &response, params, Params{"extended": false})
+
+ return
+}
+
+// MarketGetCommentsExtendedResponse struct.
+type MarketGetCommentsExtendedResponse struct {
+ Count int `json:"count"`
+ Items []object.WallWallComment `json:"items"`
+ object.ExtendedResponse
+}
+
+// MarketGetCommentsExtended returns comments list for an item.
+//
+// extended=1
+//
+// https://vk.com/dev/market.getComments
+func (vk *VK) MarketGetCommentsExtended(params Params) (response MarketGetCommentsExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("market.getComments", &response, params, Params{"extended": true})
+
+ return
+}
+
+// MarketGetGroupOrdersResponse struct.
+type MarketGetGroupOrdersResponse struct {
+ Count int `json:"count"`
+ Items []object.MarketOrder `json:"items"`
+}
+
+// MarketGetGroupOrders returns community's orders list.
+//
+// https://vk.com/dev/market.getGroupOrders
+func (vk *VK) MarketGetGroupOrders(params Params) (response MarketGetGroupOrdersResponse, err error) {
+ err = vk.RequestUnmarshal("market.getGroupOrders", &response, params)
+ return
+}
+
+// MarketGetOrderByIDResponse struct.
+type MarketGetOrderByIDResponse struct {
+ Order object.MarketOrder `json:"order"`
+}
+
+// MarketGetOrderByID returns order by id.
+//
+// https://vk.com/dev/market.getOrderById
+func (vk *VK) MarketGetOrderByID(params Params) (response MarketGetOrderByIDResponse, err error) {
+ err = vk.RequestUnmarshal("market.getOrderById", &response, params)
+ return
+}
+
+// MarketGetOrderItemsResponse struct.
+type MarketGetOrderItemsResponse struct {
+ Count int `json:"count"`
+ Items []object.MarketOrderItem `json:"items"`
+}
+
+// MarketGetOrderItems returns items of an order.
+//
+// https://vk.com/dev/market.getOrderItems
+func (vk *VK) MarketGetOrderItems(params Params) (response MarketGetOrderItemsResponse, err error) {
+ err = vk.RequestUnmarshal("market.getOrderItems", &response, params)
+ return
+}
+
+// MarketRemoveFromAlbum removes an item from one or multiple collections.
+//
+// https://vk.com/dev/market.removeFromAlbum
+func (vk *VK) MarketRemoveFromAlbum(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("market.removeFromAlbum", &response, params)
+ return
+}
+
+// MarketReorderAlbums reorders the collections list.
+//
+// https://vk.com/dev/market.reorderAlbums
+func (vk *VK) MarketReorderAlbums(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("market.reorderAlbums", &response, params)
+ return
+}
+
+// MarketReorderItems changes item place in a collection.
+//
+// https://vk.com/dev/market.reorderItems
+func (vk *VK) MarketReorderItems(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("market.reorderItems", &response, params)
+ return
+}
+
+// MarketReport sends a complaint to the item.
+//
+// https://vk.com/dev/market.report
+func (vk *VK) MarketReport(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("market.report", &response, params)
+ return
+}
+
+// MarketReportComment sends a complaint to the item's comment.
+//
+// https://vk.com/dev/market.reportComment
+func (vk *VK) MarketReportComment(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("market.reportComment", &response, params)
+ return
+}
+
+// MarketRestore restores recently deleted item.
+//
+// https://vk.com/dev/market.restore
+func (vk *VK) MarketRestore(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("market.restore", &response, params)
+ return
+}
+
+// MarketRestoreComment restores a recently deleted comment.
+//
+// https://vk.com/dev/market.restoreComment
+func (vk *VK) MarketRestoreComment(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("market.restoreComment", &response, params)
+ return
+}
+
+// MarketSearchResponse struct.
+type MarketSearchResponse struct {
+ Count int `json:"count"`
+ Items []object.MarketMarketItem `json:"items"`
+}
+
+// MarketSearch searches market items in a community's catalog.
+//
+// https://vk.com/dev/market.search
+func (vk *VK) MarketSearch(params Params) (response MarketSearchResponse, err error) {
+ err = vk.RequestUnmarshal("market.search", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/messages.go b/vendor/github.com/SevereCloud/vksdk/v2/api/messages.go
new file mode 100644
index 00000000..0a8f5613
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/messages.go
@@ -0,0 +1,616 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// MessagesAddChatUser adds a new user to a chat.
+//
+// https://vk.com/dev/messages.addChatUser
+func (vk *VK) MessagesAddChatUser(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("messages.addChatUser", &response, params)
+ return
+}
+
+// MessagesAllowMessagesFromGroup allows sending messages from community to the current user.
+//
+// https://vk.com/dev/messages.allowMessagesFromGroup
+func (vk *VK) MessagesAllowMessagesFromGroup(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("messages.allowMessagesFromGroup", &response, params)
+ return
+}
+
+// MessagesCreateChat creates a chat with several participants.
+//
+// https://vk.com/dev/messages.createChat
+func (vk *VK) MessagesCreateChat(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("messages.createChat", &response, params)
+ return
+}
+
+// MessagesDeleteResponse struct.
+type MessagesDeleteResponse map[string]int
+
+// MessagesDelete deletes one or more messages.
+//
+// https://vk.com/dev/messages.delete
+func (vk *VK) MessagesDelete(params Params) (response MessagesDeleteResponse, err error) {
+ err = vk.RequestUnmarshal("messages.delete", &response, params)
+ return
+}
+
+// MessagesDeleteChatPhotoResponse struct.
+type MessagesDeleteChatPhotoResponse struct {
+ MessageID int `json:"message_id"`
+ Chat object.MessagesChat `json:"chat"`
+}
+
+// MessagesDeleteChatPhoto deletes a chat's cover picture.
+//
+// https://vk.com/dev/messages.deleteChatPhoto
+func (vk *VK) MessagesDeleteChatPhoto(params Params) (response MessagesDeleteChatPhotoResponse, err error) {
+ err = vk.RequestUnmarshal("messages.deleteChatPhoto", &response, params)
+ return
+}
+
+// MessagesDeleteConversationResponse struct.
+type MessagesDeleteConversationResponse struct {
+ LastDeletedID int `json:"last_deleted_id"` // Id of the last message, that was deleted
+}
+
+// MessagesDeleteConversation deletes private messages in a conversation.
+//
+// https://vk.com/dev/messages.deleteConversation
+func (vk *VK) MessagesDeleteConversation(params Params) (response MessagesDeleteConversationResponse, err error) {
+ err = vk.RequestUnmarshal("messages.deleteConversation", &response, params)
+ return
+}
+
+// MessagesDenyMessagesFromGroup denies sending message from community to the current user.
+//
+// https://vk.com/dev/messages.denyMessagesFromGroup
+func (vk *VK) MessagesDenyMessagesFromGroup(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("messages.denyMessagesFromGroup", &response, params)
+ return
+}
+
+// MessagesEdit edits the message.
+//
+// https://vk.com/dev/messages.edit
+func (vk *VK) MessagesEdit(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("messages.edit", &response, params)
+ return
+}
+
+// MessagesEditChat edits the title of a chat.
+//
+// https://vk.com/dev/messages.editChat
+func (vk *VK) MessagesEditChat(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("messages.editChat", &response, params)
+ return
+}
+
+// MessagesGetByConversationMessageIDResponse struct.
+type MessagesGetByConversationMessageIDResponse struct {
+ Count int `json:"count"`
+ Items []object.MessagesMessage `json:"items"`
+ object.ExtendedResponse
+}
+
+// MessagesGetByConversationMessageID messages.getByConversationMessageId.
+//
+// https://vk.com/dev/messages.getByConversationMessageId
+func (vk *VK) MessagesGetByConversationMessageID(params Params) (
+ response MessagesGetByConversationMessageIDResponse,
+ err error,
+) {
+ err = vk.RequestUnmarshal("messages.getByConversationMessageId", &response, params)
+ return
+}
+
+// MessagesGetByIDResponse struct.
+type MessagesGetByIDResponse struct {
+ Count int `json:"count"`
+ Items []object.MessagesMessage `json:"items"`
+}
+
+// MessagesGetByID returns messages by their IDs.
+//
+// extended=0
+//
+// https://vk.com/dev/messages.getById
+func (vk *VK) MessagesGetByID(params Params) (response MessagesGetByIDResponse, err error) {
+ err = vk.RequestUnmarshal("messages.getById", &response, params, Params{"extended": false})
+
+ return
+}
+
+// MessagesGetByIDExtendedResponse struct.
+type MessagesGetByIDExtendedResponse struct {
+ Count int `json:"count"`
+ Items []object.MessagesMessage `json:"items"`
+ object.ExtendedResponse
+}
+
+// MessagesGetByIDExtended returns messages by their IDs.
+//
+// extended=1
+//
+// https://vk.com/dev/messages.getById
+func (vk *VK) MessagesGetByIDExtended(params Params) (response MessagesGetByIDExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("messages.getById", &response, params, Params{"extended": true})
+
+ return
+}
+
+// MessagesGetChatResponse struct.
+type MessagesGetChatResponse object.MessagesChat
+
+// MessagesGetChat returns information about a chat.
+//
+// https://vk.com/dev/messages.getChat
+func (vk *VK) MessagesGetChat(params Params) (response MessagesGetChatResponse, err error) {
+ err = vk.RequestUnmarshal("messages.getChat", &response, params)
+ return
+}
+
+// MessagesGetChatChatIDsResponse struct.
+type MessagesGetChatChatIDsResponse []object.MessagesChat
+
+// MessagesGetChatChatIDs returns information about a chat.
+//
+// https://vk.com/dev/messages.getChat
+func (vk *VK) MessagesGetChatChatIDs(params Params) (response MessagesGetChatChatIDsResponse, err error) {
+ err = vk.RequestUnmarshal("messages.getChat", &response, params)
+ return
+}
+
+// MessagesGetChatPreviewResponse struct.
+type MessagesGetChatPreviewResponse struct {
+ Preview object.MessagesChatPreview `json:"preview"`
+ object.ExtendedResponse
+}
+
+// MessagesGetChatPreview allows to receive chat preview by the invitation link.
+//
+// https://vk.com/dev/messages.getChatPreview
+func (vk *VK) MessagesGetChatPreview(params Params) (response MessagesGetChatPreviewResponse, err error) {
+ err = vk.RequestUnmarshal("messages.getChatPreview", &response, params)
+ return
+}
+
+// MessagesGetConversationMembersResponse struct.
+type MessagesGetConversationMembersResponse struct {
+ Items []struct {
+ MemberID int `json:"member_id"`
+ JoinDate int `json:"join_date"`
+ InvitedBy int `json:"invited_by"`
+ IsOwner object.BaseBoolInt `json:"is_owner,omitempty"`
+ IsAdmin object.BaseBoolInt `json:"is_admin,omitempty"`
+ CanKick object.BaseBoolInt `json:"can_kick,omitempty"`
+ } `json:"items"`
+ Count int `json:"count"`
+ ChatRestrictions struct {
+ OnlyAdminsInvite object.BaseBoolInt `json:"only_admins_invite"`
+ OnlyAdminsEditPin object.BaseBoolInt `json:"only_admins_edit_pin"`
+ OnlyAdminsEditInfo object.BaseBoolInt `json:"only_admins_edit_info"`
+ AdminsPromoteUsers object.BaseBoolInt `json:"admins_promote_users"`
+ } `json:"chat_restrictions"`
+ object.ExtendedResponse
+}
+
+// MessagesGetConversationMembers returns a list of IDs of users participating in a conversation.
+//
+// https://vk.com/dev/messages.getConversationMembers
+func (vk *VK) MessagesGetConversationMembers(params Params) (
+ response MessagesGetConversationMembersResponse,
+ err error,
+) {
+ err = vk.RequestUnmarshal("messages.getConversationMembers", &response, params)
+ return
+}
+
+// MessagesGetConversationsResponse struct.
+type MessagesGetConversationsResponse struct {
+ Count int `json:"count"`
+ Items []object.MessagesConversationWithMessage `json:"items"`
+ UnreadCount int `json:"unread_count"`
+ object.ExtendedResponse
+}
+
+// MessagesGetConversations returns a list of conversations.
+//
+// https://vk.com/dev/messages.getConversations
+func (vk *VK) MessagesGetConversations(params Params) (response MessagesGetConversationsResponse, err error) {
+ err = vk.RequestUnmarshal("messages.getConversations", &response, params)
+ return
+}
+
+// MessagesGetConversationsByIDResponse struct.
+type MessagesGetConversationsByIDResponse struct {
+ Count int `json:"count"`
+ Items []object.MessagesConversation `json:"items"`
+}
+
+// MessagesGetConversationsByID returns conversations by their IDs.
+//
+// extended=0
+//
+// https://vk.com/dev/messages.getConversationsById
+func (vk *VK) MessagesGetConversationsByID(params Params) (response MessagesGetConversationsByIDResponse, err error) {
+ err = vk.RequestUnmarshal("messages.getConversationsById", &response, params, Params{"extended": false})
+
+ return
+}
+
+// MessagesGetConversationsByIDExtendedResponse struct.
+type MessagesGetConversationsByIDExtendedResponse struct {
+ Count int `json:"count"`
+ Items []object.MessagesConversation `json:"items"`
+ object.ExtendedResponse
+}
+
+// MessagesGetConversationsByIDExtended returns conversations by their IDs.
+//
+// extended=1
+//
+// https://vk.com/dev/messages.getConversationsById
+func (vk *VK) MessagesGetConversationsByIDExtended(params Params) (
+ response MessagesGetConversationsByIDExtendedResponse,
+ err error,
+) {
+ err = vk.RequestUnmarshal("messages.getConversationsById", &response, params, Params{"extended": true})
+
+ return
+}
+
+// MessagesGetHistoryResponse struct.
+type MessagesGetHistoryResponse struct {
+ Count int `json:"count"`
+ Items []object.MessagesMessage `json:"items"`
+
+ // extended=1
+ object.ExtendedResponse
+
+ // extended=1
+ Conversations []object.MessagesConversation `json:"conversations,omitempty"`
+
+ // Deprecated: use .Conversations.InRead
+ InRead int `json:"in_read,omitempty"`
+ // Deprecated: use .Conversations.OutRead
+ OutRead int `json:"out_read,omitempty"`
+}
+
+// MessagesGetHistory returns message history for the specified user or group chat.
+//
+// https://vk.com/dev/messages.getHistory
+func (vk *VK) MessagesGetHistory(params Params) (response MessagesGetHistoryResponse, err error) {
+ err = vk.RequestUnmarshal("messages.getHistory", &response, params)
+ return
+}
+
+// MessagesGetHistoryAttachmentsResponse struct.
+type MessagesGetHistoryAttachmentsResponse struct {
+ Items []object.MessagesHistoryAttachment `json:"items"`
+ NextFrom string `json:"next_from"`
+ object.ExtendedResponse
+}
+
+// MessagesGetHistoryAttachments returns media files from the dialog or group chat.
+//
+// https://vk.com/dev/messages.getHistoryAttachments
+func (vk *VK) MessagesGetHistoryAttachments(params Params) (response MessagesGetHistoryAttachmentsResponse, err error) {
+ err = vk.RequestUnmarshal("messages.getHistoryAttachments", &response, params)
+ return
+}
+
+// MessagesGetImportantMessagesResponse struct.
+type MessagesGetImportantMessagesResponse struct {
+ Messages struct {
+ Count int `json:"count"`
+ Items []object.MessagesMessage `json:"items"`
+ } `json:"messages"`
+ Conversations []object.MessagesConversation `json:"conversations"`
+ object.ExtendedResponse
+}
+
+// MessagesGetImportantMessages messages.getImportantMessages.
+//
+// https://vk.com/dev/messages.getImportantMessages
+func (vk *VK) MessagesGetImportantMessages(params Params) (response MessagesGetImportantMessagesResponse, err error) {
+ err = vk.RequestUnmarshal("messages.getImportantMessages", &response, params)
+ return
+}
+
+// MessagesGetIntentUsersResponse struct.
+type MessagesGetIntentUsersResponse struct {
+ Count int `json:"count"`
+ Items []int `json:"items"`
+ Profiles []object.MessagesMessage `json:"profiles,omitempty"`
+}
+
+// MessagesGetIntentUsers method.
+//
+// https://vk.com/dev/messages.getIntentUsers
+func (vk *VK) MessagesGetIntentUsers(params Params) (response MessagesGetIntentUsersResponse, err error) {
+ err = vk.RequestUnmarshal("messages.getIntentUsers", &response, params)
+ return
+}
+
+// MessagesGetInviteLinkResponse struct.
+type MessagesGetInviteLinkResponse struct {
+ Link string `json:"link"`
+}
+
+// MessagesGetInviteLink receives a link to invite a user to the chat.
+//
+// https://vk.com/dev/messages.getInviteLink
+func (vk *VK) MessagesGetInviteLink(params Params) (response MessagesGetInviteLinkResponse, err error) {
+ err = vk.RequestUnmarshal("messages.getInviteLink", &response, params)
+ return
+}
+
+// MessagesGetLastActivityResponse struct.
+type MessagesGetLastActivityResponse object.MessagesLastActivity
+
+// MessagesGetLastActivity returns a user's current status and date of last activity.
+//
+// https://vk.com/dev/messages.getLastActivity
+func (vk *VK) MessagesGetLastActivity(params Params) (response MessagesGetLastActivityResponse, err error) {
+ err = vk.RequestUnmarshal("messages.getLastActivity", &response, params)
+ return
+}
+
+// MessagesGetLongPollHistoryResponse struct.
+type MessagesGetLongPollHistoryResponse struct {
+ History [][]int `json:"history"`
+ Groups []object.GroupsGroup `json:"groups"`
+ Messages struct {
+ Count int `json:"count"`
+ Items []object.MessagesMessage `json:"items"`
+ } `json:"messages"`
+ Profiles []object.UsersUser `json:"profiles"`
+ // Chats struct {} `json:"chats"`
+ NewPTS int `json:"new_pts"`
+ FromPTS int `json:"from_pts"`
+ More object.BaseBoolInt `json:"chats"`
+ Conversations []object.MessagesConversation `json:"conversations"`
+}
+
+// MessagesGetLongPollHistory returns updates in user's private messages.
+//
+// https://vk.com/dev/messages.getLongPollHistory
+func (vk *VK) MessagesGetLongPollHistory(params Params) (response MessagesGetLongPollHistoryResponse, err error) {
+ err = vk.RequestUnmarshal("messages.getLongPollHistory", &response, params)
+ return
+}
+
+// MessagesGetLongPollServerResponse struct.
+type MessagesGetLongPollServerResponse object.MessagesLongPollParams
+
+// MessagesGetLongPollServer returns data required for connection to a Long Poll server.
+//
+// https://vk.com/dev/messages.getLongPollServer
+func (vk *VK) MessagesGetLongPollServer(params Params) (response MessagesGetLongPollServerResponse, err error) {
+ err = vk.RequestUnmarshal("messages.getLongPollServer", &response, params)
+ return
+}
+
+// MessagesIsMessagesFromGroupAllowedResponse struct.
+type MessagesIsMessagesFromGroupAllowedResponse struct {
+ IsAllowed object.BaseBoolInt `json:"is_allowed"`
+}
+
+// MessagesIsMessagesFromGroupAllowed returns information whether
+// sending messages from the community to current user is allowed.
+//
+// https://vk.com/dev/messages.isMessagesFromGroupAllowed
+func (vk *VK) MessagesIsMessagesFromGroupAllowed(params Params) (
+ response MessagesIsMessagesFromGroupAllowedResponse,
+ err error,
+) {
+ err = vk.RequestUnmarshal("messages.isMessagesFromGroupAllowed", &response, params)
+ return
+}
+
+// MessagesJoinChatByInviteLinkResponse struct.
+type MessagesJoinChatByInviteLinkResponse struct {
+ ChatID int `json:"chat_id"`
+}
+
+// MessagesJoinChatByInviteLink allows to enter the chat by the invitation link.
+//
+// https://vk.com/dev/messages.joinChatByInviteLink
+func (vk *VK) MessagesJoinChatByInviteLink(params Params) (response MessagesJoinChatByInviteLinkResponse, err error) {
+ err = vk.RequestUnmarshal("messages.joinChatByInviteLink", &response, params)
+ return
+}
+
+// MessagesMarkAsAnsweredConversation messages.markAsAnsweredConversation.
+//
+// https://vk.com/dev/messages.markAsAnsweredConversation
+func (vk *VK) MessagesMarkAsAnsweredConversation(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("messages.markAsAnsweredConversation", &response, params)
+ return
+}
+
+// MessagesMarkAsImportantResponse struct.
+type MessagesMarkAsImportantResponse []int
+
+// MessagesMarkAsImportant marks and un marks messages as important (starred).
+//
+// https://vk.com/dev/messages.markAsImportant
+func (vk *VK) MessagesMarkAsImportant(params Params) (response MessagesMarkAsImportantResponse, err error) {
+ err = vk.RequestUnmarshal("messages.markAsImportant", &response, params)
+ return
+}
+
+// MessagesMarkAsImportantConversation messages.markAsImportantConversation.
+//
+// https://vk.com/dev/messages.markAsImportantConversation
+func (vk *VK) MessagesMarkAsImportantConversation(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("messages.markAsImportantConversation", &response, params)
+ return
+}
+
+// MessagesMarkAsRead marks messages as read.
+//
+// https://vk.com/dev/messages.markAsRead
+func (vk *VK) MessagesMarkAsRead(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("messages.markAsRead", &response, params)
+ return
+}
+
+// MessagesPinResponse struct.
+type MessagesPinResponse object.MessagesMessage
+
+// MessagesPin messages.pin.
+//
+// https://vk.com/dev/messages.pin
+func (vk *VK) MessagesPin(params Params) (response MessagesPinResponse, err error) {
+ err = vk.RequestUnmarshal("messages.pin", &response, params)
+ return
+}
+
+// MessagesRemoveChatUser allows the current user to leave a chat or, if the
+// current user started the chat, allows the user to remove another user from
+// the chat.
+//
+// https://vk.com/dev/messages.removeChatUser
+func (vk *VK) MessagesRemoveChatUser(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("messages.removeChatUser", &response, params)
+ return
+}
+
+// MessagesRestore restores a deleted message.
+//
+// https://vk.com/dev/messages.restore
+func (vk *VK) MessagesRestore(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("messages.restore", &response, params)
+ return
+}
+
+// MessagesSearchResponse struct.
+type MessagesSearchResponse struct {
+ Count int `json:"count"`
+ Items []object.MessagesMessage `json:"items"`
+ object.ExtendedResponse
+ Conversations []object.MessagesConversation `json:"conversations,omitempty"`
+}
+
+// MessagesSearch returns a list of the current user's private messages that match search criteria.
+//
+// https://vk.com/dev/messages.search
+func (vk *VK) MessagesSearch(params Params) (response MessagesSearchResponse, err error) {
+ err = vk.RequestUnmarshal("messages.search", &response, params)
+ return
+}
+
+// MessagesSearchConversationsResponse struct.
+type MessagesSearchConversationsResponse struct {
+ Count int `json:"count"`
+ Items []object.MessagesConversation `json:"items"`
+ object.ExtendedResponse
+}
+
+// MessagesSearchConversations returns a list of conversations that match search criteria.
+//
+// https://vk.com/dev/messages.searchConversations
+func (vk *VK) MessagesSearchConversations(params Params) (response MessagesSearchConversationsResponse, err error) {
+ err = vk.RequestUnmarshal("messages.searchConversations", &response, params)
+ return
+}
+
+// MessagesSend sends a message.
+//
+// For user_ids or peer_ids parameters, use MessagesSendUserIDs.
+//
+// https://vk.com/dev/messages.send
+func (vk *VK) MessagesSend(params Params) (response int, err error) {
+ reqParams := Params{
+ "user_ids": "",
+ "peer_ids": "",
+ }
+
+ err = vk.RequestUnmarshal("messages.send", &response, params, reqParams)
+
+ return
+}
+
+// MessagesSendUserIDsResponse struct.
+//
+// TODO: v3 rename MessagesSendPeerIDsResponse - user_ids outdated.
+type MessagesSendUserIDsResponse []struct {
+ PeerID int `json:"peer_id"`
+ MessageID int `json:"message_id"`
+ ConversationMessageID int `json:"conversation_message_id"`
+ Error Error `json:"error"`
+}
+
+// MessagesSendPeerIDs sends a message.
+//
+// need peer_ids;
+//
+// https://vk.com/dev/messages.send
+func (vk *VK) MessagesSendPeerIDs(params Params) (response MessagesSendUserIDsResponse, err error) {
+ err = vk.RequestUnmarshal("messages.send", &response, params)
+ return
+}
+
+// MessagesSendUserIDs sends a message.
+//
+// need user_ids or peer_ids;
+//
+// https://vk.com/dev/messages.send
+//
+// Deprecated: user_ids outdated, use MessagesSendPeerIDs.
+func (vk *VK) MessagesSendUserIDs(params Params) (response MessagesSendUserIDsResponse, err error) {
+ return vk.MessagesSendPeerIDs(params)
+}
+
+// MessagesSendMessageEventAnswer method.
+//
+// https://vk.com/dev/messages.sendMessageEventAnswer
+func (vk *VK) MessagesSendMessageEventAnswer(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("messages.sendMessageEventAnswer", &response, params)
+ return
+}
+
+// MessagesSendSticker sends a message.
+//
+// https://vk.com/dev/messages.sendSticker
+func (vk *VK) MessagesSendSticker(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("messages.sendSticker", &response, params, Params{"user_ids": ""})
+
+ return
+}
+
+// MessagesSetActivity changes the status of a user as typing in a conversation.
+//
+// https://vk.com/dev/messages.setActivity
+func (vk *VK) MessagesSetActivity(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("messages.setActivity", &response, params)
+ return
+}
+
+// MessagesSetChatPhotoResponse struct.
+type MessagesSetChatPhotoResponse struct {
+ MessageID int `json:"message_id"`
+ Chat object.MessagesChat `json:"chat"`
+}
+
+// MessagesSetChatPhoto sets a previously-uploaded picture as the cover picture of a chat.
+//
+// https://vk.com/dev/messages.setChatPhoto
+func (vk *VK) MessagesSetChatPhoto(params Params) (response MessagesSetChatPhotoResponse, err error) {
+ err = vk.RequestUnmarshal("messages.setChatPhoto", &response, params)
+ return
+}
+
+// MessagesUnpin messages.unpin.
+//
+// https://vk.com/dev/messages.unpin
+func (vk *VK) MessagesUnpin(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("messages.unpin", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/newsfeed.go b/vendor/github.com/SevereCloud/vksdk/v2/api/newsfeed.go
new file mode 100644
index 00000000..36ce1453
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/newsfeed.go
@@ -0,0 +1,230 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// NewsfeedAddBan prevents news from specified users and communities
+// from appearing in the current user's newsfeed.
+//
+// https://vk.com/dev/newsfeed.addBan
+func (vk *VK) NewsfeedAddBan(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("newsfeed.addBan", &response, params)
+ return
+}
+
+// NewsfeedDeleteBan allows news from previously banned users and
+// communities to be shown in the current user's newsfeed.
+//
+// https://vk.com/dev/newsfeed.deleteBan
+func (vk *VK) NewsfeedDeleteBan(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("newsfeed.deleteBan", &response, params)
+ return
+}
+
+// NewsfeedDeleteList the method allows you to delete a custom news list.
+//
+// https://vk.com/dev/newsfeed.deleteList
+func (vk *VK) NewsfeedDeleteList(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("newsfeed.deleteList", &response, params)
+ return
+}
+
+// NewsfeedGetResponse struct.
+type NewsfeedGetResponse struct {
+ Items []object.NewsfeedNewsfeedItem `json:"items"`
+ object.ExtendedResponse
+ NextFrom string `json:"next_from"`
+}
+
+// NewsfeedGet returns data required to show newsfeed for the current user.
+//
+// https://vk.com/dev/newsfeed.get
+func (vk *VK) NewsfeedGet(params Params) (response NewsfeedGetResponse, err error) {
+ err = vk.RequestUnmarshal("newsfeed.get", &response, params)
+ return
+}
+
+// NewsfeedGetBannedResponse struct.
+type NewsfeedGetBannedResponse struct {
+ Members []int `json:"members"`
+ Groups []int `json:"groups"`
+}
+
+// NewsfeedGetBanned returns a list of users and communities banned from the current user's newsfeed.
+//
+// extended=0
+//
+// https://vk.com/dev/newsfeed.getBanned
+func (vk *VK) NewsfeedGetBanned(params Params) (response NewsfeedGetBannedResponse, err error) {
+ err = vk.RequestUnmarshal("newsfeed.getBanned", &response, params, Params{"extended": false})
+
+ return
+}
+
+// NewsfeedGetBannedExtendedResponse struct.
+type NewsfeedGetBannedExtendedResponse struct {
+ object.ExtendedResponse
+}
+
+// NewsfeedGetBannedExtended returns a list of users and communities banned from the current user's newsfeed.
+//
+// extended=1
+//
+// https://vk.com/dev/newsfeed.getBanned
+func (vk *VK) NewsfeedGetBannedExtended(params Params) (response NewsfeedGetBannedExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("newsfeed.getBanned", &response, params, Params{"extended": true})
+
+ return
+}
+
+// NewsfeedGetCommentsResponse struct.
+type NewsfeedGetCommentsResponse struct {
+ Items []object.NewsfeedNewsfeedItem `json:"items"`
+ object.ExtendedResponse
+ NextFrom string `json:"next_from"`
+}
+
+// NewsfeedGetComments returns a list of comments in the current user's newsfeed.
+//
+// https://vk.com/dev/newsfeed.getComments
+func (vk *VK) NewsfeedGetComments(params Params) (response NewsfeedGetCommentsResponse, err error) {
+ err = vk.RequestUnmarshal("newsfeed.getComments", &response, params)
+ return
+}
+
+// NewsfeedGetListsResponse struct.
+type NewsfeedGetListsResponse struct {
+ Count int `json:"count"`
+ Items []struct {
+ ID int `json:"id"`
+ Title string `json:"title"`
+ NoReposts int `json:"no_reposts"`
+ SourceIDs []int `json:"source_ids"`
+ } `json:"items"`
+}
+
+// NewsfeedGetLists returns a list of newsfeeds followed by the current user.
+//
+// https://vk.com/dev/newsfeed.getLists
+func (vk *VK) NewsfeedGetLists(params Params) (response NewsfeedGetListsResponse, err error) {
+ err = vk.RequestUnmarshal("newsfeed.getLists", &response, params)
+ return
+}
+
+// NewsfeedGetMentionsResponse struct.
+type NewsfeedGetMentionsResponse struct {
+ Count int `json:"count"`
+ Items []object.WallWallpostToID `json:"items"`
+}
+
+// NewsfeedGetMentions returns a list of posts on user walls in which the current user is mentioned.
+//
+// https://vk.com/dev/newsfeed.getMentions
+func (vk *VK) NewsfeedGetMentions(params Params) (response NewsfeedGetMentionsResponse, err error) {
+ err = vk.RequestUnmarshal("newsfeed.getMentions", &response, params)
+ return
+}
+
+// NewsfeedGetRecommendedResponse struct.
+type NewsfeedGetRecommendedResponse struct {
+ Items []object.NewsfeedNewsfeedItem `json:"items"`
+ Profiles []object.UsersUser `json:"profiles"`
+ Groups []object.GroupsGroup `json:"groups"`
+ NextOffset string `json:"next_offset"`
+ NextFrom string `json:"next_from"`
+}
+
+// NewsfeedGetRecommended returns a list of newsfeeds recommended to the current user.
+//
+// https://vk.com/dev/newsfeed.getRecommended
+func (vk *VK) NewsfeedGetRecommended(params Params) (response NewsfeedGetRecommendedResponse, err error) {
+ err = vk.RequestUnmarshal("newsfeed.getRecommended", &response, params)
+ return
+}
+
+// NewsfeedGetSuggestedSourcesResponse struct.
+type NewsfeedGetSuggestedSourcesResponse struct {
+ Count int `json:"count"`
+ Items []object.GroupsGroup `json:"items"` // FIXME: GroupsGroup + UsersUser
+}
+
+// NewsfeedGetSuggestedSources returns communities and users that current user is suggested to follow.
+//
+// https://vk.com/dev/newsfeed.getSuggestedSources
+func (vk *VK) NewsfeedGetSuggestedSources(params Params) (response NewsfeedGetSuggestedSourcesResponse, err error) {
+ err = vk.RequestUnmarshal("newsfeed.getSuggestedSources", &response, params)
+ return
+}
+
+// NewsfeedIgnoreItem hides an item from the newsfeed.
+//
+// https://vk.com/dev/newsfeed.ignoreItem
+func (vk *VK) NewsfeedIgnoreItem(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("newsfeed.ignoreItem", &response, params)
+ return
+}
+
+// NewsfeedSaveList creates and edits user newsfeed lists.
+//
+// https://vk.com/dev/newsfeed.saveList
+func (vk *VK) NewsfeedSaveList(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("newsfeed.saveList", &response, params)
+ return
+}
+
+// NewsfeedSearchResponse struct.
+type NewsfeedSearchResponse struct {
+ Items []object.WallWallpost `json:"items"`
+ Count int `json:"count"`
+ TotalCount int `json:"total_count"`
+ NextFrom string `json:"next_from"`
+}
+
+// NewsfeedSearch returns search results by statuses.
+//
+// extended=0
+//
+// https://vk.com/dev/newsfeed.search
+func (vk *VK) NewsfeedSearch(params Params) (response NewsfeedSearchResponse, err error) {
+ err = vk.RequestUnmarshal("newsfeed.search", &response, params, Params{"extended": false})
+
+ return
+}
+
+// NewsfeedSearchExtendedResponse struct.
+type NewsfeedSearchExtendedResponse struct {
+ Items []object.WallWallpost `json:"items"`
+ Count int `json:"count"`
+ TotalCount int `json:"total_count"`
+ Profiles []object.UsersUser `json:"profiles"`
+ Groups []object.GroupsGroup `json:"groups"`
+ NextFrom string `json:"next_from"`
+}
+
+// NewsfeedSearchExtended returns search results by statuses.
+//
+// extended=1
+//
+// https://vk.com/dev/newsfeed.search
+func (vk *VK) NewsfeedSearchExtended(params Params) (response NewsfeedSearchExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("newsfeed.search", &response, params, Params{"extended": true})
+
+ return
+}
+
+// NewsfeedUnignoreItem returns a hidden item to the newsfeed.
+//
+// https://vk.com/dev/newsfeed.unignoreItem
+func (vk *VK) NewsfeedUnignoreItem(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("newsfeed.unignoreItem", &response, params)
+ return
+}
+
+// NewsfeedUnsubscribe unsubscribes the current user from specified newsfeeds.
+//
+// https://vk.com/dev/newsfeed.unsubscribe
+func (vk *VK) NewsfeedUnsubscribe(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("newsfeed.unsubscribe", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/notes.go b/vendor/github.com/SevereCloud/vksdk/v2/api/notes.go
new file mode 100644
index 00000000..dd0d4f5e
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/notes.go
@@ -0,0 +1,100 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// NotesAdd creates a new note for the current user.
+//
+// https://vk.com/dev/notes.add
+func (vk *VK) NotesAdd(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("notes.add", &response, params)
+ return
+}
+
+// NotesCreateComment adds a new comment on a note.
+//
+// https://vk.com/dev/notes.createComment
+func (vk *VK) NotesCreateComment(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("notes.createComment", &response, params)
+ return
+}
+
+// NotesDelete deletes a note of the current user.
+//
+// https://vk.com/dev/notes.delete
+func (vk *VK) NotesDelete(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("notes.delete", &response, params)
+ return
+}
+
+// NotesDeleteComment deletes a comment on a note.
+//
+// https://vk.com/dev/notes.deleteComment
+func (vk *VK) NotesDeleteComment(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("notes.deleteComment", &response, params)
+ return
+}
+
+// NotesEdit edits a note of the current user.
+//
+// https://vk.com/dev/notes.edit
+func (vk *VK) NotesEdit(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("notes.edit", &response, params)
+ return
+}
+
+// NotesEditComment edits a comment on a note.
+//
+// https://vk.com/dev/notes.editComment
+func (vk *VK) NotesEditComment(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("notes.editComment", &response, params)
+ return
+}
+
+// NotesGetResponse struct.
+type NotesGetResponse struct {
+ Count int `json:"count"`
+ Items []object.NotesNote `json:"items"`
+}
+
+// NotesGet returns a list of notes created by a user.
+//
+// https://vk.com/dev/notes.get
+func (vk *VK) NotesGet(params Params) (response NotesGetResponse, err error) {
+ err = vk.RequestUnmarshal("notes.get", &response, params)
+ return
+}
+
+// NotesGetByIDResponse struct.
+type NotesGetByIDResponse object.NotesNote
+
+// NotesGetByID returns a note by its ID.
+//
+// https://vk.com/dev/notes.getById
+func (vk *VK) NotesGetByID(params Params) (response NotesGetByIDResponse, err error) {
+ err = vk.RequestUnmarshal("notes.getById", &response, params)
+ return
+}
+
+// NotesGetCommentsResponse struct.
+type NotesGetCommentsResponse struct {
+ Count int `json:"count"`
+ Items []object.NotesNoteComment `json:"items"`
+}
+
+// NotesGetComments returns a list of comments on a note.
+//
+// https://vk.com/dev/notes.getComments
+func (vk *VK) NotesGetComments(params Params) (response NotesGetCommentsResponse, err error) {
+ err = vk.RequestUnmarshal("notes.getComments", &response, params)
+ return
+}
+
+// NotesRestoreComment restores a deleted comment on a note.
+//
+// https://vk.com/dev/notes.restoreComment
+func (vk *VK) NotesRestoreComment(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("notes.restoreComment", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/notifications.go b/vendor/github.com/SevereCloud/vksdk/v2/api/notifications.go
new file mode 100644
index 00000000..8630a1d2
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/notifications.go
@@ -0,0 +1,54 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// NotificationsGetResponse struct.
+type NotificationsGetResponse struct {
+ Count int `json:"count"`
+ Items []object.NotificationsNotification `json:"items"`
+ Profiles []object.UsersUser `json:"profiles"`
+ Groups []object.GroupsGroup `json:"groups"`
+ Photos []object.PhotosPhoto `json:"photos"`
+ Videos []object.VideoVideo `json:"videos"`
+ Apps []object.AppsApp `json:"apps"`
+ LastViewed int `json:"last_viewed"`
+ NextFrom string `json:"next_from"`
+ TTL int `json:"ttl"`
+}
+
+// NotificationsGet returns a list of notifications about other users' feedback to the current user's wall posts.
+//
+// https://vk.com/dev/notifications.get
+func (vk *VK) NotificationsGet(params Params) (response NotificationsGetResponse, err error) {
+ err = vk.RequestUnmarshal("notifications.get", &response, params)
+ return
+}
+
+// NotificationsMarkAsViewed resets the counter of new notifications
+// about other users' feedback to the current user's wall posts.
+//
+// https://vk.com/dev/notifications.markAsViewed
+func (vk *VK) NotificationsMarkAsViewed(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("notifications.markAsViewed", &response, params)
+ return
+}
+
+// NotificationsSendMessageResponse struct.
+type NotificationsSendMessageResponse []struct {
+ UserID int `json:"user_id"`
+ Status object.BaseBoolInt `json:"status"`
+ Error struct {
+ Code int `json:"code"`
+ Description string `json:"description"`
+ } `json:"error"`
+}
+
+// NotificationsSendMessage sends notification to the VK Apps user.
+//
+// https://vk.com/dev/notifications.sendMessage
+func (vk *VK) NotificationsSendMessage(params Params) (response NotificationsSendMessageResponse, err error) {
+ err = vk.RequestUnmarshal("notifications.sendMessage", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/orders.go b/vendor/github.com/SevereCloud/vksdk/v2/api/orders.go
new file mode 100644
index 00000000..35dfac42
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/orders.go
@@ -0,0 +1,90 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// OrdersCancelSubscription allows to cancel subscription.
+//
+// https://vk.com/dev/orders.cancelSubscription
+func (vk *VK) OrdersCancelSubscription(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("orders.cancelSubscription", &response, params)
+ return
+}
+
+// OrdersChangeStateResponse struct.
+type OrdersChangeStateResponse string // New state
+
+// OrdersChangeState changes order status.
+//
+// https://vk.com/dev/orders.changeState
+func (vk *VK) OrdersChangeState(params Params) (response OrdersChangeStateResponse, err error) {
+ err = vk.RequestUnmarshal("orders.changeState", &response, params)
+ return
+}
+
+// OrdersGetResponse struct.
+type OrdersGetResponse []object.OrdersOrder
+
+// OrdersGet returns a list of orders.
+//
+// https://vk.com/dev/orders.get
+func (vk *VK) OrdersGet(params Params) (response OrdersGetResponse, err error) {
+ err = vk.RequestUnmarshal("orders.get", &response, params)
+ return
+}
+
+// OrdersGetAmountResponse struct.
+type OrdersGetAmountResponse []object.OrdersAmount
+
+// OrdersGetAmount returns the cost of votes in the user's consent.
+//
+// https://vk.com/dev/orders.getAmount
+func (vk *VK) OrdersGetAmount(params Params) (response OrdersGetAmountResponse, err error) {
+ err = vk.RequestUnmarshal("orders.getAmount", &response, params)
+ return
+}
+
+// OrdersGetByIDResponse struct.
+type OrdersGetByIDResponse []object.OrdersOrder
+
+// OrdersGetByID returns information about orders by their IDs.
+//
+// https://vk.com/dev/orders.getByID
+func (vk *VK) OrdersGetByID(params Params) (response OrdersGetByIDResponse, err error) {
+ err = vk.RequestUnmarshal("orders.getById", &response, params)
+ return
+}
+
+// OrdersGetUserSubscriptionByIDResponse struct.
+type OrdersGetUserSubscriptionByIDResponse object.OrdersSubscription
+
+// OrdersGetUserSubscriptionByID allows to get subscription by its ID.
+//
+// https://vk.com/dev/orders.getUserSubscriptionById
+func (vk *VK) OrdersGetUserSubscriptionByID(params Params) (response OrdersGetUserSubscriptionByIDResponse, err error) {
+ err = vk.RequestUnmarshal("orders.getUserSubscriptionById", &response, params)
+ return
+}
+
+// OrdersGetUserSubscriptionsResponse struct.
+type OrdersGetUserSubscriptionsResponse struct {
+ Count int `json:"count"` // Total number
+ Items []object.OrdersSubscription `json:"items"`
+}
+
+// OrdersGetUserSubscriptions allows to get user's active subscriptions.
+//
+// https://vk.com/dev/orders.getUserSubscriptions
+func (vk *VK) OrdersGetUserSubscriptions(params Params) (response OrdersGetUserSubscriptionsResponse, err error) {
+ err = vk.RequestUnmarshal("orders.getUserSubscriptions", &response, params)
+ return
+}
+
+// OrdersUpdateSubscription allows to update subscription price.
+//
+// https://vk.com/dev/orders.updateSubscription
+func (vk *VK) OrdersUpdateSubscription(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("orders.updateSubscription", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/pages.go b/vendor/github.com/SevereCloud/vksdk/v2/api/pages.go
new file mode 100644
index 00000000..7f4a2c25
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/pages.go
@@ -0,0 +1,81 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// PagesClearCache allows to clear the cache of particular external pages which may be attached to VK posts.
+//
+// https://vk.com/dev/pages.clearCache
+func (vk *VK) PagesClearCache(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("pages.clearCache", &response, params)
+ return
+}
+
+// PagesGetResponse struct.
+type PagesGetResponse object.PagesWikipageFull
+
+// PagesGet returns information about a wiki page.
+//
+// https://vk.com/dev/pages.get
+func (vk *VK) PagesGet(params Params) (response PagesGetResponse, err error) {
+ err = vk.RequestUnmarshal("pages.get", &response, params)
+ return
+}
+
+// PagesGetHistoryResponse struct.
+type PagesGetHistoryResponse []object.PagesWikipageHistory
+
+// PagesGetHistory returns a list of all previous versions of a wiki page.
+//
+// https://vk.com/dev/pages.getHistory
+func (vk *VK) PagesGetHistory(params Params) (response PagesGetHistoryResponse, err error) {
+ err = vk.RequestUnmarshal("pages.getHistory", &response, params)
+ return
+}
+
+// PagesGetTitlesResponse struct.
+type PagesGetTitlesResponse []object.PagesWikipageFull
+
+// PagesGetTitles returns a list of wiki pages in a group.
+//
+// https://vk.com/dev/pages.getTitles
+func (vk *VK) PagesGetTitles(params Params) (response PagesGetTitlesResponse, err error) {
+ err = vk.RequestUnmarshal("pages.getTitles", &response, params)
+ return
+}
+
+// PagesGetVersionResponse struct.
+type PagesGetVersionResponse object.PagesWikipageFull
+
+// PagesGetVersion returns the text of one of the previous versions of a wiki page.
+//
+// https://vk.com/dev/pages.getVersion
+func (vk *VK) PagesGetVersion(params Params) (response PagesGetVersionResponse, err error) {
+ err = vk.RequestUnmarshal("pages.getVersion", &response, params)
+ return
+}
+
+// PagesParseWiki returns HTML representation of the wiki markup.
+//
+// https://vk.com/dev/pages.parseWiki
+func (vk *VK) PagesParseWiki(params Params) (response string, err error) {
+ err = vk.RequestUnmarshal("pages.parseWiki", &response, params)
+ return
+}
+
+// PagesSave saves the text of a wiki page.
+//
+// https://vk.com/dev/pages.save
+func (vk *VK) PagesSave(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("pages.save", &response, params)
+ return
+}
+
+// PagesSaveAccess saves modified read and edit access settings for a wiki page.
+//
+// https://vk.com/dev/pages.saveAccess
+func (vk *VK) PagesSaveAccess(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("pages.saveAccess", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/photos.go b/vendor/github.com/SevereCloud/vksdk/v2/api/photos.go
new file mode 100644
index 00000000..714705b4
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/photos.go
@@ -0,0 +1,613 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// PhotosConfirmTag confirms a tag on a photo.
+//
+// https://vk.com/dev/photos.confirmTag
+func (vk *VK) PhotosConfirmTag(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("photos.confirmTag", &response, params)
+ return
+}
+
+// PhotosCopy allows to copy a photo to the "Saved photos" album.
+//
+// https://vk.com/dev/photos.copy
+func (vk *VK) PhotosCopy(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("photos.copy", &response, params)
+ return
+}
+
+// PhotosCreateAlbumResponse struct.
+type PhotosCreateAlbumResponse object.PhotosPhotoAlbumFull
+
+// PhotosCreateAlbum creates an empty photo album.
+//
+// https://vk.com/dev/photos.createAlbum
+func (vk *VK) PhotosCreateAlbum(params Params) (response PhotosCreateAlbumResponse, err error) {
+ err = vk.RequestUnmarshal("photos.createAlbum", &response, params)
+ return
+}
+
+// PhotosCreateComment adds a new comment on the photo.
+//
+// https://vk.com/dev/photos.createComment
+func (vk *VK) PhotosCreateComment(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("photos.createComment", &response, params)
+ return
+}
+
+// PhotosDelete deletes a photo.
+//
+// https://vk.com/dev/photos.delete
+func (vk *VK) PhotosDelete(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("photos.delete", &response, params)
+ return
+}
+
+// PhotosDeleteAlbum deletes a photo album belonging to the current user.
+//
+// https://vk.com/dev/photos.deleteAlbum
+func (vk *VK) PhotosDeleteAlbum(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("photos.deleteAlbum", &response, params)
+ return
+}
+
+// PhotosDeleteComment deletes a comment on the photo.
+//
+// https://vk.com/dev/photos.deleteComment
+func (vk *VK) PhotosDeleteComment(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("photos.deleteComment", &response, params)
+ return
+}
+
+// PhotosEdit edits the caption of a photo.
+//
+// https://vk.com/dev/photos.edit
+func (vk *VK) PhotosEdit(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("photos.edit", &response, params)
+ return
+}
+
+// PhotosEditAlbum edits information about a photo album.
+//
+// https://vk.com/dev/photos.editAlbum
+func (vk *VK) PhotosEditAlbum(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("photos.editAlbum", &response, params)
+ return
+}
+
+// PhotosEditComment edits a comment on a photo.
+//
+// https://vk.com/dev/photos.editComment
+func (vk *VK) PhotosEditComment(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("photos.editComment", &response, params)
+ return
+}
+
+// PhotosGetResponse struct.
+type PhotosGetResponse struct {
+ Count int `json:"count"` // Total number
+ Items []object.PhotosPhoto `json:"items"`
+}
+
+// PhotosGet returns a list of a user's or community's photos.
+//
+// extended=0
+//
+// https://vk.com/dev/photos.get
+func (vk *VK) PhotosGet(params Params) (response PhotosGetResponse, err error) {
+ err = vk.RequestUnmarshal("photos.get", &response, params, Params{"extended": false})
+
+ return
+}
+
+// PhotosGetExtendedResponse struct.
+type PhotosGetExtendedResponse struct {
+ Count int `json:"count"` // Total number
+ Items []object.PhotosPhotoFull `json:"items"`
+}
+
+// PhotosGetExtended returns a list of a user's or community's photos.
+//
+// extended=1
+//
+// https://vk.com/dev/photos.get
+func (vk *VK) PhotosGetExtended(params Params) (response PhotosGetExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("photos.get", &response, params, Params{"extended": true})
+
+ return
+}
+
+// PhotosGetAlbumsResponse struct.
+type PhotosGetAlbumsResponse struct {
+ Count int `json:"count"` // Total number
+ Items []object.PhotosPhotoAlbumFull `json:"items"`
+}
+
+// PhotosGetAlbums returns a list of a user's or community's photo albums.
+//
+// https://vk.com/dev/photos.getAlbums
+func (vk *VK) PhotosGetAlbums(params Params) (response PhotosGetAlbumsResponse, err error) {
+ err = vk.RequestUnmarshal("photos.getAlbums", &response, params)
+ return
+}
+
+// PhotosGetAlbumsCount returns the number of photo albums belonging to a user or community.
+//
+// https://vk.com/dev/photos.getAlbumsCount
+func (vk *VK) PhotosGetAlbumsCount(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("photos.getAlbumsCount", &response, params)
+ return
+}
+
+// PhotosGetAllResponse struct.
+type PhotosGetAllResponse struct {
+ Count int `json:"count"` // Total number
+ Items []object.PhotosPhotoXtrRealOffset `json:"items"`
+ More object.BaseBoolInt `json:"more"` // Information whether next page is presented
+}
+
+// PhotosGetAll returns a list of photos belonging to a user or community, in reverse chronological order.
+//
+// extended=0
+//
+// https://vk.com/dev/photos.getAll
+func (vk *VK) PhotosGetAll(params Params) (response PhotosGetAllResponse, err error) {
+ err = vk.RequestUnmarshal("photos.getAll", &response, params, Params{"extended": false})
+
+ return
+}
+
+// PhotosGetAllExtendedResponse struct.
+type PhotosGetAllExtendedResponse struct {
+ Count int `json:"count"` // Total number
+ Items []object.PhotosPhotoFullXtrRealOffset `json:"items"`
+ More object.BaseBoolInt `json:"more"` // Information whether next page is presented
+}
+
+// PhotosGetAllExtended returns a list of photos belonging to a user or community, in reverse chronological order.
+//
+// extended=1
+//
+// https://vk.com/dev/photos.getAll
+func (vk *VK) PhotosGetAllExtended(params Params) (response PhotosGetAllExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("photos.getAll", &response, params, Params{"extended": true})
+
+ return
+}
+
+// PhotosGetAllCommentsResponse struct.
+type PhotosGetAllCommentsResponse struct {
+ Count int `json:"count"` // Total number
+ Items []object.PhotosCommentXtrPid `json:"items"`
+}
+
+// PhotosGetAllComments returns a list of comments on a specific
+// photo album or all albums of the user sorted in reverse chronological order.
+//
+// https://vk.com/dev/photos.getAllComments
+func (vk *VK) PhotosGetAllComments(params Params) (response PhotosGetAllCommentsResponse, err error) {
+ err = vk.RequestUnmarshal("photos.getAllComments", &response, params)
+ return
+}
+
+// PhotosGetByIDResponse struct.
+type PhotosGetByIDResponse []object.PhotosPhoto
+
+// PhotosGetByID returns information about photos by their IDs.
+//
+// extended=0
+//
+// https://vk.com/dev/photos.getById
+func (vk *VK) PhotosGetByID(params Params) (response PhotosGetByIDResponse, err error) {
+ err = vk.RequestUnmarshal("photos.getById", &response, params, Params{"extended": false})
+
+ return
+}
+
+// PhotosGetByIDExtendedResponse struct.
+type PhotosGetByIDExtendedResponse []object.PhotosPhotoFull
+
+// PhotosGetByIDExtended returns information about photos by their IDs.
+//
+// extended=1
+//
+// https://vk.com/dev/photos.getById
+func (vk *VK) PhotosGetByIDExtended(params Params) (response PhotosGetByIDExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("photos.getById", &response, params, Params{"extended": true})
+
+ return
+}
+
+// PhotosGetChatUploadServerResponse struct.
+type PhotosGetChatUploadServerResponse struct {
+ UploadURL string `json:"upload_url"`
+}
+
+// PhotosGetChatUploadServer returns an upload link for chat cover pictures.
+//
+// https://vk.com/dev/photos.getChatUploadServer
+func (vk *VK) PhotosGetChatUploadServer(params Params) (response PhotosGetChatUploadServerResponse, err error) {
+ err = vk.RequestUnmarshal("photos.getChatUploadServer", &response, params)
+ return
+}
+
+// PhotosGetCommentsResponse struct.
+type PhotosGetCommentsResponse struct {
+ Count int `json:"count"` // Total number
+ RealOffset int `json:"real_offset"` // Real offset of the comments
+ Items []object.WallWallComment `json:"items"`
+}
+
+// PhotosGetComments returns a list of comments on a photo.
+//
+// extended=0
+//
+// https://vk.com/dev/photos.getComments
+func (vk *VK) PhotosGetComments(params Params) (response PhotosGetCommentsResponse, err error) {
+ err = vk.RequestUnmarshal("photos.getComments", &response, params, Params{"extended": false})
+
+ return
+}
+
+// PhotosGetCommentsExtendedResponse struct.
+type PhotosGetCommentsExtendedResponse struct {
+ Count int `json:"count"` // Total number
+ RealOffset int `json:"real_offset"` // Real offset of the comments
+ Items []object.WallWallComment `json:"items"`
+ Profiles []object.UsersUser `json:"profiles"`
+ Groups []object.GroupsGroup `json:"groups"`
+}
+
+// PhotosGetCommentsExtended returns a list of comments on a photo.
+//
+// extended=1
+//
+// https://vk.com/dev/photos.getComments
+func (vk *VK) PhotosGetCommentsExtended(params Params) (response PhotosGetCommentsExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("photos.getComments", &response, params, Params{"extended": true})
+
+ return
+}
+
+// PhotosGetMarketAlbumUploadServerResponse struct.
+type PhotosGetMarketAlbumUploadServerResponse struct {
+ UploadURL string `json:"upload_url"`
+}
+
+// PhotosGetMarketAlbumUploadServer returns the server address for market album photo upload.
+//
+// https://vk.com/dev/photos.getMarketAlbumUploadServer
+func (vk *VK) PhotosGetMarketAlbumUploadServer(params Params) (
+ response PhotosGetMarketAlbumUploadServerResponse,
+ err error,
+) {
+ err = vk.RequestUnmarshal("photos.getMarketAlbumUploadServer", &response, params)
+ return
+}
+
+// PhotosGetMarketUploadServerResponse struct.
+type PhotosGetMarketUploadServerResponse struct {
+ UploadURL string `json:"upload_url"`
+}
+
+// PhotosGetMarketUploadServer returns the server address for market photo upload.
+//
+// https://vk.com/dev/photos.getMarketUploadServer
+func (vk *VK) PhotosGetMarketUploadServer(params Params) (response PhotosGetMarketUploadServerResponse, err error) {
+ err = vk.RequestUnmarshal("photos.getMarketUploadServer", &response, params)
+ return
+}
+
+// PhotosGetMessagesUploadServerResponse struct.
+type PhotosGetMessagesUploadServerResponse struct {
+ AlbumID int `json:"album_id"`
+ UploadURL string `json:"upload_url"`
+ UserID int `json:"user_id,omitempty"`
+ GroupID int `json:"group_id,omitempty"`
+}
+
+// PhotosGetMessagesUploadServer returns the server address for photo upload onto a messages.
+//
+// https://vk.com/dev/photos.getMessagesUploadServer
+func (vk *VK) PhotosGetMessagesUploadServer(params Params) (response PhotosGetMessagesUploadServerResponse, err error) {
+ err = vk.RequestUnmarshal("photos.getMessagesUploadServer", &response, params)
+ return
+}
+
+// PhotosGetNewTagsResponse struct.
+type PhotosGetNewTagsResponse struct {
+ Count int `json:"count"` // Total number
+ Items []object.PhotosPhotoXtrTagInfo `json:"items"`
+}
+
+// PhotosGetNewTags returns a list of photos with tags that have not been viewed.
+//
+// https://vk.com/dev/photos.getNewTags
+func (vk *VK) PhotosGetNewTags(params Params) (response PhotosGetNewTagsResponse, err error) {
+ err = vk.RequestUnmarshal("photos.getNewTags", &response, params)
+ return
+}
+
+// PhotosGetOwnerCoverPhotoUploadServerResponse struct.
+type PhotosGetOwnerCoverPhotoUploadServerResponse struct {
+ UploadURL string `json:"upload_url"`
+}
+
+// PhotosGetOwnerCoverPhotoUploadServer receives server address for uploading community cover.
+//
+// https://vk.com/dev/photos.getOwnerCoverPhotoUploadServer
+func (vk *VK) PhotosGetOwnerCoverPhotoUploadServer(params Params) (
+ response PhotosGetOwnerCoverPhotoUploadServerResponse,
+ err error,
+) {
+ err = vk.RequestUnmarshal("photos.getOwnerCoverPhotoUploadServer", &response, params)
+ return
+}
+
+// PhotosGetOwnerPhotoUploadServerResponse struct.
+type PhotosGetOwnerPhotoUploadServerResponse struct {
+ UploadURL string `json:"upload_url"`
+}
+
+// PhotosGetOwnerPhotoUploadServer returns an upload server address for a
+// profile or community photo.
+//
+// https://vk.com/dev/photos.getOwnerPhotoUploadServer
+func (vk *VK) PhotosGetOwnerPhotoUploadServer(params Params) (
+ response PhotosGetOwnerPhotoUploadServerResponse,
+ err error,
+) {
+ err = vk.RequestUnmarshal("photos.getOwnerPhotoUploadServer", &response, params)
+ return
+}
+
+// PhotosGetTagsResponse struct.
+type PhotosGetTagsResponse []object.PhotosPhotoTag
+
+// PhotosGetTags returns a list of tags on a photo.
+//
+// https://vk.com/dev/photos.getTags
+func (vk *VK) PhotosGetTags(params Params) (response PhotosGetTagsResponse, err error) {
+ err = vk.RequestUnmarshal("photos.getTags", &response, params)
+ return
+}
+
+// PhotosGetUploadServerResponse struct.
+type PhotosGetUploadServerResponse object.PhotosPhotoUpload
+
+// PhotosGetUploadServer returns the server address for photo upload.
+//
+// https://vk.com/dev/photos.getUploadServer
+func (vk *VK) PhotosGetUploadServer(params Params) (response PhotosGetUploadServerResponse, err error) {
+ err = vk.RequestUnmarshal("photos.getUploadServer", &response, params)
+ return
+}
+
+// PhotosGetUserPhotosResponse struct.
+type PhotosGetUserPhotosResponse struct {
+ Count int `json:"count"` // Total number
+ Items []object.PhotosPhoto `json:"items"`
+}
+
+// PhotosGetUserPhotos returns a list of photos in which a user is tagged.
+//
+// extended=0
+//
+// https://vk.com/dev/photos.getUserPhotos
+func (vk *VK) PhotosGetUserPhotos(params Params) (response PhotosGetUserPhotosResponse, err error) {
+ err = vk.RequestUnmarshal("photos.getUserPhotos", &response, params, Params{"extended": false})
+
+ return
+}
+
+// PhotosGetUserPhotosExtendedResponse struct.
+type PhotosGetUserPhotosExtendedResponse struct {
+ Count int `json:"count"` // Total number
+ Items []object.PhotosPhotoFull `json:"items"`
+}
+
+// PhotosGetUserPhotosExtended returns a list of photos in which a user is tagged.
+//
+// extended=1
+//
+// https://vk.com/dev/photos.getUserPhotos
+func (vk *VK) PhotosGetUserPhotosExtended(params Params) (response PhotosGetUserPhotosExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("photos.getUserPhotos", &response, params, Params{"extended": true})
+
+ return
+}
+
+// PhotosGetWallUploadServerResponse struct.
+type PhotosGetWallUploadServerResponse object.PhotosPhotoUpload
+
+// PhotosGetWallUploadServer returns the server address for photo upload onto a user's wall.
+//
+// https://vk.com/dev/photos.getWallUploadServer
+func (vk *VK) PhotosGetWallUploadServer(params Params) (response PhotosGetWallUploadServerResponse, err error) {
+ err = vk.RequestUnmarshal("photos.getWallUploadServer", &response, params)
+ return
+}
+
+// PhotosMakeCover makes a photo into an album cover.
+//
+// https://vk.com/dev/photos.makeCover
+func (vk *VK) PhotosMakeCover(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("photos.makeCover", &response, params)
+ return
+}
+
+// PhotosMove a photo from one album to another.
+//
+// https://vk.com/dev/photos.moveMoves
+func (vk *VK) PhotosMove(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("photos.move", &response, params)
+ return
+}
+
+// PhotosPutTag adds a tag on the photo.
+//
+// https://vk.com/dev/photos.putTag
+func (vk *VK) PhotosPutTag(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("photos.putTag", &response, params)
+ return
+}
+
+// PhotosRemoveTag removes a tag from a photo.
+//
+// https://vk.com/dev/photos.removeTag
+func (vk *VK) PhotosRemoveTag(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("photos.removeTag", &response, params)
+ return
+}
+
+// PhotosReorderAlbums reorders the album in the list of user albums.
+//
+// https://vk.com/dev/photos.reorderAlbums
+func (vk *VK) PhotosReorderAlbums(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("photos.reorderAlbums", &response, params)
+ return
+}
+
+// PhotosReorderPhotos reorders the photo in the list of photos of the user album.
+//
+// https://vk.com/dev/photos.reorderPhotos
+func (vk *VK) PhotosReorderPhotos(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("photos.reorderPhotos", &response, params)
+ return
+}
+
+// PhotosReport reports (submits a complaint about) a photo.
+//
+// https://vk.com/dev/photos.report
+func (vk *VK) PhotosReport(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("photos.report", &response, params)
+ return
+}
+
+// PhotosReportComment reports (submits a complaint about) a comment on a photo.
+//
+// https://vk.com/dev/photos.reportComment
+func (vk *VK) PhotosReportComment(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("photos.reportComment", &response, params)
+ return
+}
+
+// PhotosRestore restores a deleted photo.
+//
+// https://vk.com/dev/photos.restore
+func (vk *VK) PhotosRestore(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("photos.restore", &response, params)
+ return
+}
+
+// PhotosRestoreComment restores a deleted comment on a photo.
+//
+// https://vk.com/dev/photos.restoreComment
+func (vk *VK) PhotosRestoreComment(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("photos.restoreComment", &response, params)
+ return
+}
+
+// PhotosSaveResponse struct.
+type PhotosSaveResponse []object.PhotosPhoto
+
+// PhotosSave saves photos after successful uploading.
+//
+// https://vk.com/dev/photos.save
+func (vk *VK) PhotosSave(params Params) (response PhotosSaveResponse, err error) {
+ err = vk.RequestUnmarshal("photos.save", &response, params)
+ return
+}
+
+// PhotosSaveMarketAlbumPhotoResponse struct.
+type PhotosSaveMarketAlbumPhotoResponse []object.PhotosPhoto
+
+// PhotosSaveMarketAlbumPhoto photo Saves market album photos after successful uploading.
+//
+// https://vk.com/dev/photos.saveMarketAlbumPhoto
+func (vk *VK) PhotosSaveMarketAlbumPhoto(params Params) (response PhotosSaveMarketAlbumPhotoResponse, err error) {
+ err = vk.RequestUnmarshal("photos.saveMarketAlbumPhoto", &response, params)
+ return
+}
+
+// PhotosSaveMarketPhotoResponse struct.
+type PhotosSaveMarketPhotoResponse []object.PhotosPhoto
+
+// PhotosSaveMarketPhoto saves market photos after successful uploading.
+//
+// https://vk.com/dev/photos.saveMarketPhoto
+func (vk *VK) PhotosSaveMarketPhoto(params Params) (response PhotosSaveMarketPhotoResponse, err error) {
+ err = vk.RequestUnmarshal("photos.saveMarketPhoto", &response, params)
+ return
+}
+
+// PhotosSaveMessagesPhotoResponse struct.
+type PhotosSaveMessagesPhotoResponse []object.PhotosPhoto
+
+// PhotosSaveMessagesPhoto saves a photo after being successfully.
+//
+// https://vk.com/dev/photos.saveMessagesPhoto
+func (vk *VK) PhotosSaveMessagesPhoto(params Params) (response PhotosSaveMessagesPhotoResponse, err error) {
+ err = vk.RequestUnmarshal("photos.saveMessagesPhoto", &response, params)
+ return
+}
+
+// PhotosSaveOwnerCoverPhotoResponse struct.
+type PhotosSaveOwnerCoverPhotoResponse struct {
+ Images []object.PhotosImage `json:"images"`
+}
+
+// PhotosSaveOwnerCoverPhoto saves cover photo after successful uploading.
+//
+// https://vk.com/dev/photos.saveOwnerCoverPhoto
+func (vk *VK) PhotosSaveOwnerCoverPhoto(params Params) (response PhotosSaveOwnerCoverPhotoResponse, err error) {
+ err = vk.RequestUnmarshal("photos.saveOwnerCoverPhoto", &response, params)
+ return
+}
+
+// PhotosSaveOwnerPhotoResponse struct.
+type PhotosSaveOwnerPhotoResponse struct {
+ PhotoHash string `json:"photo_hash"`
+ PhotoSrc string `json:"photo_src"`
+ PhotoSrcBig string `json:"photo_src_big"`
+ PhotoSrcSmall string `json:"photo_src_small"`
+ Saved int `json:"saved"`
+ PostID int `json:"post_id"`
+}
+
+// PhotosSaveOwnerPhoto saves a profile or community photo.
+//
+// https://vk.com/dev/photos.saveOwnerPhoto
+func (vk *VK) PhotosSaveOwnerPhoto(params Params) (response PhotosSaveOwnerPhotoResponse, err error) {
+ err = vk.RequestUnmarshal("photos.saveOwnerPhoto", &response, params)
+ return
+}
+
+// PhotosSaveWallPhotoResponse struct.
+type PhotosSaveWallPhotoResponse []object.PhotosPhoto
+
+// PhotosSaveWallPhoto saves a photo to a user's or community's wall after being uploaded.
+//
+// https://vk.com/dev/photos.saveWallPhoto
+func (vk *VK) PhotosSaveWallPhoto(params Params) (response PhotosSaveWallPhotoResponse, err error) {
+ err = vk.RequestUnmarshal("photos.saveWallPhoto", &response, params)
+ return
+}
+
+// PhotosSearchResponse struct.
+type PhotosSearchResponse struct {
+ Count int `json:"count"` // Total number
+ Items []object.PhotosPhotoFull `json:"items"`
+}
+
+// PhotosSearch returns a list of photos.
+//
+// https://vk.com/dev/photos.search
+func (vk *VK) PhotosSearch(params Params) (response PhotosSearchResponse, err error) {
+ err = vk.RequestUnmarshal("photos.search", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/podcasts.go b/vendor/github.com/SevereCloud/vksdk/v2/api/podcasts.go
new file mode 100644
index 00000000..8534d0fc
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/podcasts.go
@@ -0,0 +1,179 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// PodcastsGetCatalogResponse struct.
+type PodcastsGetCatalogResponse struct {
+ Items []object.PodcastsItem `json:"items"`
+}
+
+// PodcastsGetCatalog method.
+//
+// extended=0
+//
+// https://vk.com/dev/podcasts.getCatalog
+func (vk *VK) PodcastsGetCatalog(params Params) (response PodcastsGetCatalogResponse, err error) {
+ err = vk.RequestUnmarshal("podcasts.getCatalog", &response, params, Params{"extended": false})
+
+ return
+}
+
+// PodcastsGetCatalogExtendedResponse struct.
+type PodcastsGetCatalogExtendedResponse struct {
+ Items []object.PodcastsItem `json:"items"`
+ object.ExtendedResponse
+}
+
+// PodcastsGetCatalogExtended method.
+//
+// extended=1
+//
+// https://vk.com/dev/podcasts.getCatalog
+func (vk *VK) PodcastsGetCatalogExtended(params Params) (response PodcastsGetCatalogExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("podcasts.getCatalog", &response, params, Params{"extended": true})
+
+ return
+}
+
+// PodcastsGetCategoriesResponse struct.
+type PodcastsGetCategoriesResponse []object.PodcastsCategory
+
+// PodcastsGetCategories method.
+//
+// https://vk.com/dev/podcasts.getCategories
+func (vk *VK) PodcastsGetCategories(params Params) (response PodcastsGetCategoriesResponse, err error) {
+ err = vk.RequestUnmarshal("podcasts.getCategories", &response, params)
+ return
+}
+
+// PodcastsGetEpisodesResponse struct.
+type PodcastsGetEpisodesResponse struct {
+ Count int `json:"count"`
+ Items []object.PodcastsEpisode `json:"items"`
+}
+
+// PodcastsGetEpisodes method.
+//
+// https://vk.com/dev/podcasts.getEpisodes
+func (vk *VK) PodcastsGetEpisodes(params Params) (response PodcastsGetEpisodesResponse, err error) {
+ err = vk.RequestUnmarshal("podcasts.getEpisodes", &response, params)
+ return
+}
+
+// PodcastsGetFeedResponse struct.
+type PodcastsGetFeedResponse struct {
+ Items []object.PodcastsEpisode `json:"items"`
+ NextFrom string `json:"next_from"`
+}
+
+// PodcastsGetFeed method.
+//
+// extended=0
+//
+// https://vk.com/dev/podcasts.getFeed
+func (vk *VK) PodcastsGetFeed(params Params) (response PodcastsGetFeedResponse, err error) {
+ err = vk.RequestUnmarshal("podcasts.getFeed", &response, params, Params{"extended": false})
+
+ return
+}
+
+// PodcastsGetFeedExtendedResponse struct.
+type PodcastsGetFeedExtendedResponse struct {
+ Items []object.PodcastsEpisode `json:"items"`
+ NextFrom string `json:"next_from"`
+ object.ExtendedResponse
+}
+
+// PodcastsGetFeedExtended method.
+//
+// extended=1
+//
+// https://vk.com/dev/podcasts.getFeed
+func (vk *VK) PodcastsGetFeedExtended(params Params) (response PodcastsGetFeedExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("podcasts.getFeed", &response, params, Params{"extended": true})
+
+ return
+}
+
+// PodcastsGetStartPageResponse struct.
+type PodcastsGetStartPageResponse struct {
+ Order []string `json:"order"`
+ InProgress []object.PodcastsEpisode `json:"in_progress"`
+ Bookmarks []object.PodcastsEpisode `json:"bookmarks"`
+ Articles []object.Article `json:"articles"`
+ StaticHowTo []bool `json:"static_how_to"`
+ FriendsLiked []object.PodcastsEpisode `json:"friends_liked"`
+ Subscriptions []object.PodcastsEpisode `json:"subscriptions"`
+ CategoriesList []object.PodcastsCategory `json:"categories_list"`
+ RecommendedEpisodes []object.PodcastsEpisode `json:"recommended_episodes"`
+ Catalog []struct {
+ Category object.PodcastsCategory `json:"category"`
+ Items []object.PodcastsItem `json:"items"`
+ } `json:"catalog"`
+}
+
+// PodcastsGetStartPage method.
+//
+// extended=0
+//
+// https://vk.com/dev/podcasts.getStartPage
+func (vk *VK) PodcastsGetStartPage(params Params) (response PodcastsGetStartPageResponse, err error) {
+ err = vk.RequestUnmarshal("podcasts.getStartPage", &response, params, Params{"extended": false})
+
+ return
+}
+
+// PodcastsGetStartPageExtendedResponse struct.
+type PodcastsGetStartPageExtendedResponse struct {
+ Order []string `json:"order"`
+ InProgress []object.PodcastsEpisode `json:"in_progress"`
+ Bookmarks []object.PodcastsEpisode `json:"bookmarks"`
+ Articles []object.Article `json:"articles"`
+ StaticHowTo []bool `json:"static_how_to"`
+ FriendsLiked []object.PodcastsEpisode `json:"friends_liked"`
+ Subscriptions []object.PodcastsEpisode `json:"subscriptions"`
+ CategoriesList []object.PodcastsCategory `json:"categories_list"`
+ RecommendedEpisodes []object.PodcastsEpisode `json:"recommended_episodes"`
+ Catalog []struct {
+ Category object.PodcastsCategory `json:"category"`
+ Items []object.PodcastsItem `json:"items"`
+ } `json:"catalog"`
+ object.ExtendedResponse
+}
+
+// PodcastsGetStartPageExtended method.
+//
+// extended=1
+//
+// https://vk.com/dev/podcasts.getStartPage
+func (vk *VK) PodcastsGetStartPageExtended(params Params) (response PodcastsGetStartPageExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("podcasts.getStartPage", &response, params, Params{"extended": true})
+
+ return
+}
+
+// PodcastsMarkAsListened method.
+//
+// https://vk.com/dev/podcasts.markAsListened
+func (vk *VK) PodcastsMarkAsListened(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("podcasts.markAsListened", &response, params)
+ return
+}
+
+// PodcastsSubscribe method.
+//
+// https://vk.com/dev/podcasts.subscribe
+func (vk *VK) PodcastsSubscribe(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("podcasts.subscribe", &response, params)
+ return
+}
+
+// PodcastsUnsubscribe method.
+//
+// https://vk.com/dev/podcasts.unsubscribe
+func (vk *VK) PodcastsUnsubscribe(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("podcasts.unsubscribe", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/polls.go b/vendor/github.com/SevereCloud/vksdk/v2/api/polls.go
new file mode 100644
index 00000000..968b242e
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/polls.go
@@ -0,0 +1,106 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import "github.com/SevereCloud/vksdk/v2/object"
+
+// PollsAddVote adds the current user's vote to the selected answer in the poll.
+//
+// https://vk.com/dev/polls.addVote
+func (vk *VK) PollsAddVote(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("polls.addVote", &response, params)
+ return
+}
+
+// PollsCreateResponse struct.
+type PollsCreateResponse object.PollsPoll
+
+// PollsCreate creates polls that can be attached to the users' or communities' posts.
+//
+// https://vk.com/dev/polls.create
+func (vk *VK) PollsCreate(params Params) (response PollsCreateResponse, err error) {
+ err = vk.RequestUnmarshal("polls.create", &response, params)
+ return
+}
+
+// PollsDeleteVote deletes the current user's vote from the selected answer in the poll.
+//
+// https://vk.com/dev/polls.deleteVote
+func (vk *VK) PollsDeleteVote(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("polls.deleteVote", &response, params)
+ return
+}
+
+// PollsEdit edits created polls.
+//
+// https://vk.com/dev/polls.edit
+func (vk *VK) PollsEdit(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("polls.edit", &response, params)
+ return
+}
+
+// PollsGetBackgroundsResponse struct.
+type PollsGetBackgroundsResponse []object.PollsBackground
+
+// PollsGetBackgrounds return default backgrounds for polls.
+//
+// https://vk.com/dev/polls.getBackgrounds
+func (vk *VK) PollsGetBackgrounds(params Params) (response PollsGetBackgroundsResponse, err error) {
+ err = vk.RequestUnmarshal("polls.getBackgrounds", &response, params)
+ return
+}
+
+// PollsGetByIDResponse struct.
+type PollsGetByIDResponse object.PollsPoll
+
+// PollsGetByID returns detailed information about a poll by its ID.
+//
+// https://vk.com/dev/polls.getById
+func (vk *VK) PollsGetByID(params Params) (response PollsGetByIDResponse, err error) {
+ err = vk.RequestUnmarshal("polls.getById", &response, params)
+ return
+}
+
+// PollsGetPhotoUploadServerResponse struct.
+type PollsGetPhotoUploadServerResponse struct {
+ UploadURL string `json:"upload_url"`
+}
+
+// PollsGetPhotoUploadServer returns a URL for uploading a photo to a poll.
+//
+// https://vk.com/dev/polls.getPhotoUploadServer
+func (vk *VK) PollsGetPhotoUploadServer(params Params) (response PollsGetPhotoUploadServerResponse, err error) {
+ err = vk.RequestUnmarshal("polls.getPhotoUploadServer", &response, params)
+ return
+}
+
+// PollsGetVotersResponse struct.
+type PollsGetVotersResponse []object.PollsVoters
+
+// PollsGetVoters returns a list of IDs of users who selected specific answers in the poll.
+//
+// https://vk.com/dev/polls.getVoters
+func (vk *VK) PollsGetVoters(params Params) (response PollsGetVotersResponse, err error) {
+ err = vk.RequestUnmarshal("polls.getVoters", &response, params)
+ return
+}
+
+// PollsGetVotersFieldsResponse struct.
+type PollsGetVotersFieldsResponse []object.PollsVotersFields
+
+// PollsGetVotersFields returns a list of IDs of users who selected specific answers in the poll.
+//
+// https://vk.com/dev/polls.getVoters
+func (vk *VK) PollsGetVotersFields(params Params) (response PollsGetVotersFieldsResponse, err error) {
+ err = vk.RequestUnmarshal("polls.getVoters", &response, params)
+ return
+}
+
+// PollsSavePhotoResponse struct.
+type PollsSavePhotoResponse object.PollsPhoto
+
+// PollsSavePhoto allows to save poll's uploaded photo.
+//
+// https://vk.com/dev/polls.savePhoto
+func (vk *VK) PollsSavePhoto(params Params) (response PollsSavePhotoResponse, err error) {
+ err = vk.RequestUnmarshal("polls.savePhoto", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/prettycards.go b/vendor/github.com/SevereCloud/vksdk/v2/api/prettycards.go
new file mode 100644
index 00000000..c51f5efa
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/prettycards.go
@@ -0,0 +1,79 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import "github.com/SevereCloud/vksdk/v2/object"
+
+// PrettyCardsCreateResponse struct.
+type PrettyCardsCreateResponse struct {
+ OwnerID int `json:"owner_id"` // Owner ID of created pretty card
+ CardID string `json:"card_id"` // Card ID of created pretty card
+}
+
+// PrettyCardsCreate method.
+//
+// https://vk.com/dev/prettyCards.create
+func (vk *VK) PrettyCardsCreate(params Params) (response PrettyCardsCreateResponse, err error) {
+ err = vk.RequestUnmarshal("prettyCards.create", &response, params)
+ return
+}
+
+// PrettyCardsDeleteResponse struct.
+type PrettyCardsDeleteResponse struct {
+ OwnerID int `json:"owner_id"` // Owner ID of created pretty card
+ CardID string `json:"card_id"` // Card ID of created pretty card
+ Error string `json:"error"` // Error reason if error happened
+}
+
+// PrettyCardsDelete method.
+//
+// https://vk.com/dev/prettyCards.delete
+func (vk *VK) PrettyCardsDelete(params Params) (response PrettyCardsDeleteResponse, err error) {
+ err = vk.RequestUnmarshal("prettyCards.delete", &response, params)
+ return
+}
+
+// PrettyCardsEditResponse struct.
+type PrettyCardsEditResponse struct {
+ OwnerID int `json:"owner_id"` // Owner ID of created pretty card
+ CardID string `json:"card_id"` // Card ID of created pretty card
+}
+
+// PrettyCardsEdit method.
+//
+// https://vk.com/dev/prettyCards.edit
+func (vk *VK) PrettyCardsEdit(params Params) (response PrettyCardsEditResponse, err error) {
+ err = vk.RequestUnmarshal("prettyCards.edit", &response, params)
+ return
+}
+
+// PrettyCardsGetResponse struct.
+type PrettyCardsGetResponse struct {
+ Count int `json:"count"` // Total number
+ Items []object.PrettyCardsPrettyCard `json:"items"`
+}
+
+// PrettyCardsGet method.
+//
+// https://vk.com/dev/prettyCards.get
+func (vk *VK) PrettyCardsGet(params Params) (response PrettyCardsGetResponse, err error) {
+ err = vk.RequestUnmarshal("prettyCards.get", &response, params)
+ return
+}
+
+// PrettyCardsGetByIDResponse struct.
+type PrettyCardsGetByIDResponse []object.PrettyCardsPrettyCard
+
+// PrettyCardsGetByID method.
+//
+// https://vk.com/dev/prettyCards.getById
+func (vk *VK) PrettyCardsGetByID(params Params) (response PrettyCardsGetByIDResponse, err error) {
+ err = vk.RequestUnmarshal("prettyCards.getById", &response, params)
+ return
+}
+
+// PrettyCardsGetUploadURL method.
+//
+// https://vk.com/dev/prettyCards.getUploadURL
+func (vk *VK) PrettyCardsGetUploadURL(params Params) (response string, err error) {
+ err = vk.RequestUnmarshal("prettyCards.getUploadURL", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/search.go b/vendor/github.com/SevereCloud/vksdk/v2/api/search.go
new file mode 100644
index 00000000..0d9f9549
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/search.go
@@ -0,0 +1,17 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import "github.com/SevereCloud/vksdk/v2/object"
+
+// SearchGetHintsResponse struct.
+type SearchGetHintsResponse struct {
+ Count int `json:"count"`
+ Items []object.SearchHint `json:"items"`
+}
+
+// SearchGetHints allows the programmer to do a quick search for any substring.
+//
+// https://vk.com/dev/search.getHints
+func (vk *VK) SearchGetHints(params Params) (response SearchGetHintsResponse, err error) {
+ err = vk.RequestUnmarshal("search.getHints", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/secure.go b/vendor/github.com/SevereCloud/vksdk/v2/api/secure.go
new file mode 100644
index 00000000..b5637f24
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/secure.go
@@ -0,0 +1,110 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// SecureAddAppEventResponse struct.
+type SecureAddAppEventResponse int // FIXME: not found documentation. https://github.com/VKCOM/vk-api-schema/issues/98
+
+// SecureAddAppEvent adds user activity information to an application.
+//
+// https://vk.com/dev/secure.addAppEvent
+func (vk *VK) SecureAddAppEvent(params Params) (response SecureAddAppEventResponse, err error) {
+ err = vk.RequestUnmarshal("secure.addAppEvent", &response, params)
+ return
+}
+
+// SecureCheckTokenResponse struct.
+type SecureCheckTokenResponse object.SecureTokenChecked
+
+// SecureCheckToken checks the user authentication in IFrame and Flash apps using the access_token parameter.
+//
+// https://vk.com/dev/secure.checkToken
+func (vk *VK) SecureCheckToken(params Params) (response SecureCheckTokenResponse, err error) {
+ err = vk.RequestUnmarshal("secure.checkToken", &response, params)
+ return
+}
+
+// SecureGetAppBalance returns payment balance of the application in hundredth of a vote.
+//
+// https://vk.com/dev/secure.getAppBalance
+func (vk *VK) SecureGetAppBalance(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("secure.getAppBalance", &response, params)
+ return
+}
+
+// SecureGetSMSHistoryResponse struct.
+type SecureGetSMSHistoryResponse []object.SecureSmsNotification
+
+// SecureGetSMSHistory shows a list of SMS notifications sent by the
+// application using secure.sendSMSNotification method.
+//
+// https://vk.com/dev/secure.getSMSHistory
+func (vk *VK) SecureGetSMSHistory(params Params) (response SecureGetSMSHistoryResponse, err error) {
+ err = vk.RequestUnmarshal("secure.getSMSHistory", &response, params)
+ return
+}
+
+// SecureGetTransactionsHistoryResponse struct.
+type SecureGetTransactionsHistoryResponse []object.SecureTransaction
+
+// SecureGetTransactionsHistory shows history of votes transaction between users and the application.
+//
+// https://vk.com/dev/secure.getTransactionsHistory
+func (vk *VK) SecureGetTransactionsHistory(params Params) (response SecureGetTransactionsHistoryResponse, err error) {
+ err = vk.RequestUnmarshal("secure.getTransactionsHistory", &response, params)
+ return
+}
+
+// SecureGetUserLevelResponse struct.
+type SecureGetUserLevelResponse []object.SecureLevel
+
+// SecureGetUserLevel returns one of the previously set game levels of one or more users in the application.
+//
+// https://vk.com/dev/secure.getUserLevel
+func (vk *VK) SecureGetUserLevel(params Params) (response SecureGetUserLevelResponse, err error) {
+ err = vk.RequestUnmarshal("secure.getUserLevel", &response, params)
+ return
+}
+
+// SecureGiveEventStickerResponse struct.
+type SecureGiveEventStickerResponse []struct {
+ UserID int `json:"user_id"`
+ Status string `json:"status"`
+}
+
+// SecureGiveEventSticker method.
+//
+// https://vk.com/dev/secure.giveEventSticker
+func (vk *VK) SecureGiveEventSticker(params Params) (response SecureGiveEventStickerResponse, err error) {
+ err = vk.RequestUnmarshal("secure.giveEventSticker", &response, params)
+ return
+}
+
+// SecureSendNotificationResponse struct.
+type SecureSendNotificationResponse []int // User ID
+
+// SecureSendNotification sends notification to the user.
+//
+// https://vk.com/dev/secure.sendNotification
+func (vk *VK) SecureSendNotification(params Params) (response SecureSendNotificationResponse, err error) {
+ err = vk.RequestUnmarshal("secure.sendNotification", &response, params)
+ return
+}
+
+// SecureSendSMSNotification sends SMS notification to a user's mobile device.
+//
+// https://vk.com/dev/secure.sendSMSNotification
+func (vk *VK) SecureSendSMSNotification(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("secure.sendSMSNotification", &response, params)
+ return
+}
+
+// SecureSetCounter sets a counter which is shown to the user in bold in the left menu.
+//
+// https://vk.com/dev/secure.setCounter
+func (vk *VK) SecureSetCounter(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("secure.setCounter", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/stats.go b/vendor/github.com/SevereCloud/vksdk/v2/api/stats.go
new file mode 100644
index 00000000..86572e01
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/stats.go
@@ -0,0 +1,35 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// StatsGetResponse struct.
+type StatsGetResponse []object.StatsPeriod
+
+// StatsGet returns statistics of a community or an application.
+//
+// https://vk.com/dev/stats.get
+func (vk *VK) StatsGet(params Params) (response StatsGetResponse, err error) {
+ err = vk.RequestUnmarshal("stats.get", &response, params)
+ return
+}
+
+// StatsGetPostReachResponse struct.
+type StatsGetPostReachResponse []object.StatsWallpostStat
+
+// StatsGetPostReach returns stats for a wall post.
+//
+// https://vk.com/dev/stats.getPostReach
+func (vk *VK) StatsGetPostReach(params Params) (response StatsGetPostReachResponse, err error) {
+ err = vk.RequestUnmarshal("stats.getPostReach", &response, params)
+ return
+}
+
+// StatsTrackVisitor adds current session's data in the application statistics.
+//
+// https://vk.com/dev/stats.trackVisitor
+func (vk *VK) StatsTrackVisitor(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("stats.trackVisitor", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/status.go b/vendor/github.com/SevereCloud/vksdk/v2/api/status.go
new file mode 100644
index 00000000..e9bb7775
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/status.go
@@ -0,0 +1,23 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// StatusGetResponse struct.
+type StatusGetResponse struct {
+ Audio object.AudioAudio `json:"audio"`
+ Text string `json:"text"`
+}
+
+// StatusGet returns data required to show the status of a user or community.
+func (vk *VK) StatusGet(params Params) (response StatusGetResponse, err error) {
+ err = vk.RequestUnmarshal("status.get", &response, params)
+ return
+}
+
+// StatusSet sets a new status for the current user.
+func (vk *VK) StatusSet(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("status.set", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/storage.go b/vendor/github.com/SevereCloud/vksdk/v2/api/storage.go
new file mode 100644
index 00000000..ed1d8c64
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/storage.go
@@ -0,0 +1,48 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// StorageGetResponse struct.
+type StorageGetResponse []object.BaseRequestParam
+
+// ToMap return map from StorageGetResponse.
+func (s StorageGetResponse) ToMap() map[string]string {
+ m := make(map[string]string)
+ for _, item := range s {
+ m[item.Key] = item.Value
+ }
+
+ return m
+}
+
+// StorageGet returns a value of variable with the name set by key parameter.
+//
+// StorageGet always return array!
+//
+// https://vk.com/dev/storage.get
+func (vk *VK) StorageGet(params Params) (response StorageGetResponse, err error) {
+ err = vk.RequestUnmarshal("storage.get", &response, params)
+
+ return
+}
+
+// StorageGetKeysResponse struct.
+type StorageGetKeysResponse []string
+
+// StorageGetKeys returns the names of all variables.
+//
+// https://vk.com/dev/storage.getKeys
+func (vk *VK) StorageGetKeys(params Params) (response StorageGetKeysResponse, err error) {
+ err = vk.RequestUnmarshal("storage.getKeys", &response, params)
+ return
+}
+
+// StorageSet saves a value of variable with the name set by key parameter.
+//
+// https://vk.com/dev/storage.set
+func (vk *VK) StorageSet(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("storage.set", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/stories.go b/vendor/github.com/SevereCloud/vksdk/v2/api/stories.go
new file mode 100644
index 00000000..46c643b9
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/stories.go
@@ -0,0 +1,305 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import "github.com/SevereCloud/vksdk/v2/object"
+
+// StoriesBanOwner allows to hide stories from chosen sources from current user's feed.
+//
+// https://vk.com/dev/stories.banOwner
+func (vk *VK) StoriesBanOwner(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("stories.banOwner", &response, params)
+ return
+}
+
+// StoriesDelete allows to delete story.
+//
+// https://vk.com/dev/stories.delete
+func (vk *VK) StoriesDelete(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("stories.delete", &response, params)
+ return
+}
+
+// StoriesGetResponse struct.
+type StoriesGetResponse struct {
+ Count int `json:"count"`
+ Items []object.StoriesFeedItem `json:"items"`
+ PromoData object.StoriesPromoData `json:"promo_data"`
+ NeedUploadScreen object.BaseBoolInt `json:"need_upload_screen"`
+}
+
+// StoriesGet returns stories available for current user.
+//
+// extended=0
+//
+// https://vk.com/dev/stories.get
+func (vk *VK) StoriesGet(params Params) (response StoriesGetResponse, err error) {
+ err = vk.RequestUnmarshal("stories.get", &response, params, Params{"extended": false})
+
+ return
+}
+
+// StoriesGetExtendedResponse struct.
+type StoriesGetExtendedResponse struct {
+ Count int `json:"count"`
+ Items []object.StoriesFeedItem `json:"items"`
+ PromoData object.StoriesPromoData `json:"promo_data"`
+ NeedUploadScreen object.BaseBoolInt `json:"need_upload_screen"`
+ object.ExtendedResponse
+}
+
+// StoriesGetExtended returns stories available for current user.
+//
+// extended=1
+//
+// https://vk.com/dev/stories.get
+func (vk *VK) StoriesGetExtended(params Params) (response StoriesGetExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("stories.get", &response, params, Params{"extended": true})
+
+ return
+}
+
+// StoriesGetBannedResponse struct.
+type StoriesGetBannedResponse struct {
+ Count int `json:"count"`
+ Items []int `json:"items"`
+}
+
+// StoriesGetBanned returns list of sources hidden from current user's feed.
+//
+// extended=0
+//
+// https://vk.com/dev/stories.getBanned
+func (vk *VK) StoriesGetBanned(params Params) (response StoriesGetBannedResponse, err error) {
+ err = vk.RequestUnmarshal("stories.getBanned", &response, params, Params{"extended": false})
+
+ return
+}
+
+// StoriesGetBannedExtendedResponse struct.
+type StoriesGetBannedExtendedResponse struct {
+ Count int `json:"count"`
+ Items []int `json:"items"`
+ object.ExtendedResponse
+}
+
+// StoriesGetBannedExtended returns list of sources hidden from current user's feed.
+//
+// extended=1
+//
+// https://vk.com/dev/stories.getBanned
+func (vk *VK) StoriesGetBannedExtended(params Params) (response StoriesGetBannedExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("stories.getBanned", &response, params, Params{"extended": true})
+
+ return
+}
+
+// StoriesGetByIDResponse struct.
+type StoriesGetByIDResponse struct {
+ Count int `json:"count"`
+ Items []object.StoriesStory `json:"items"`
+}
+
+// StoriesGetByID returns story by its ID.
+//
+// extended=0
+//
+// https://vk.com/dev/stories.getById
+func (vk *VK) StoriesGetByID(params Params) (response StoriesGetByIDResponse, err error) {
+ err = vk.RequestUnmarshal("stories.getById", &response, params, Params{"extended": false})
+
+ return
+}
+
+// StoriesGetByIDExtendedResponse struct.
+type StoriesGetByIDExtendedResponse struct {
+ Count int `json:"count"`
+ Items []object.StoriesStory `json:"items"`
+ object.ExtendedResponse
+}
+
+// StoriesGetByIDExtended returns story by its ID.
+//
+// extended=1
+//
+// https://vk.com/dev/stories.getById
+func (vk *VK) StoriesGetByIDExtended(params Params) (response StoriesGetByIDExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("stories.getById", &response, params, Params{"extended": true})
+
+ return
+}
+
+// StoriesGetPhotoUploadServerResponse struct.
+type StoriesGetPhotoUploadServerResponse struct {
+ UploadURL string `json:"upload_url"`
+ PeerIDs []int `json:"peer_ids"`
+ UserIDs []int `json:"user_ids"`
+}
+
+// StoriesGetPhotoUploadServer returns URL for uploading a story with photo.
+//
+// https://vk.com/dev/stories.getPhotoUploadServer
+func (vk *VK) StoriesGetPhotoUploadServer(params Params) (response StoriesGetPhotoUploadServerResponse, err error) {
+ err = vk.RequestUnmarshal("stories.getPhotoUploadServer", &response, params)
+ return
+}
+
+// StoriesGetRepliesResponse struct.
+type StoriesGetRepliesResponse struct {
+ Count int `json:"count"`
+ Items []object.StoriesFeedItem `json:"items"`
+}
+
+// StoriesGetReplies returns replies to the story.
+//
+// extended=0
+//
+// https://vk.com/dev/stories.getReplies
+func (vk *VK) StoriesGetReplies(params Params) (response StoriesGetRepliesResponse, err error) {
+ err = vk.RequestUnmarshal("stories.getReplies", &response, params, Params{"extended": false})
+
+ return
+}
+
+// StoriesGetRepliesExtendedResponse struct.
+type StoriesGetRepliesExtendedResponse struct {
+ Count int `json:"count"`
+ Items []object.StoriesFeedItem `json:"items"`
+ object.ExtendedResponse
+}
+
+// StoriesGetRepliesExtended returns replies to the story.
+//
+// extended=1
+//
+// https://vk.com/dev/stories.getReplies
+func (vk *VK) StoriesGetRepliesExtended(params Params) (response StoriesGetRepliesExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("stories.getReplies", &response, params, Params{"extended": true})
+
+ return
+}
+
+// StoriesGetStatsResponse struct.
+type StoriesGetStatsResponse object.StoriesStoryStats
+
+// StoriesGetStats return statistics data for the story.
+//
+// https://vk.com/dev/stories.getStats
+func (vk *VK) StoriesGetStats(params Params) (response StoriesGetStatsResponse, err error) {
+ err = vk.RequestUnmarshal("stories.getStats", &response, params)
+ return
+}
+
+// StoriesGetVideoUploadServerResponse struct.
+type StoriesGetVideoUploadServerResponse struct {
+ UploadURL string `json:"upload_url"`
+ PeerIDs []int `json:"peer_ids"`
+ UserIDs []int `json:"user_ids"`
+}
+
+// StoriesGetVideoUploadServer allows to receive URL for uploading story with video.
+//
+// https://vk.com/dev/stories.getVideoUploadServer
+func (vk *VK) StoriesGetVideoUploadServer(params Params) (response StoriesGetVideoUploadServerResponse, err error) {
+ err = vk.RequestUnmarshal("stories.getVideoUploadServer", &response, params)
+ return
+}
+
+// StoriesGetViewersResponse struct.
+type StoriesGetViewersResponse struct {
+ Count int `json:"count"`
+ Items []object.StoriesViewer `json:"items"`
+}
+
+// StoriesGetViewers returns a list of story viewers.
+//
+// extended=0
+//
+// https://vk.com/dev/stories.getViewers
+func (vk *VK) StoriesGetViewers(params Params) (response StoriesGetViewersResponse, err error) {
+ err = vk.RequestUnmarshal("stories.getViewers", &response, params)
+
+ return
+}
+
+// StoriesHideAllReplies hides all replies in the last 24 hours from the user to current user's stories.
+//
+// https://vk.com/dev/stories.hideAllReplies
+func (vk *VK) StoriesHideAllReplies(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("stories.hideAllReplies", &response, params)
+ return
+}
+
+// StoriesHideReply hides the reply to the current user's story.
+//
+// https://vk.com/dev/stories.hideReply
+func (vk *VK) StoriesHideReply(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("stories.hideReply", &response, params)
+ return
+}
+
+// StoriesSaveResponse struct.
+type StoriesSaveResponse struct {
+ Count int `json:"count"`
+ Items []object.StoriesStory `json:"items"`
+}
+
+// StoriesSave method.
+//
+// https://vk.com/dev/stories.save
+func (vk *VK) StoriesSave(params Params) (response StoriesSaveResponse, err error) {
+ err = vk.RequestUnmarshal("stories.save", &response, params)
+ return
+}
+
+// StoriesSearchResponse struct.
+type StoriesSearchResponse struct {
+ Count int `json:"count"`
+ Items []object.StoriesFeedItem `json:"items"`
+}
+
+// StoriesSearch returns search results for stories.
+//
+// extended=0
+//
+// https://vk.com/dev/stories.search
+func (vk *VK) StoriesSearch(params Params) (response StoriesSearchResponse, err error) {
+ err = vk.RequestUnmarshal("stories.search", &response, params, Params{"extended": false})
+
+ return
+}
+
+// StoriesSearchExtendedResponse struct.
+type StoriesSearchExtendedResponse struct {
+ Count int `json:"count"`
+ Items []object.StoriesFeedItem `json:"items"`
+ object.ExtendedResponse
+}
+
+// StoriesSearchExtended returns search results for stories.
+//
+// extended=1
+//
+// https://vk.com/dev/stories.search
+func (vk *VK) StoriesSearchExtended(params Params) (response StoriesSearchExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("stories.search", &response, params, Params{"extended": true})
+
+ return
+}
+
+// StoriesSendInteraction sends feedback to the story.
+//
+// Available for applications with type VK Mini Apps. The default method is
+// not available to applications.
+//
+// https://vk.com/dev/stories.sendInteraction
+func (vk *VK) StoriesSendInteraction(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("stories.sendInteraction", &response, params)
+ return
+}
+
+// StoriesUnbanOwner allows to show stories from hidden sources in current user's feed.
+//
+// https://vk.com/dev/stories.unbanOwner
+func (vk *VK) StoriesUnbanOwner(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("stories.unbanOwner", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/streaming.go b/vendor/github.com/SevereCloud/vksdk/v2/api/streaming.go
new file mode 100644
index 00000000..c3484e69
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/streaming.go
@@ -0,0 +1,67 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+// StreamingGetServerURLResponse struct.
+type StreamingGetServerURLResponse struct {
+ Endpoint string `json:"endpoint"`
+ Key string `json:"key"`
+}
+
+// StreamingGetServerURL allows to receive data for the connection to Streaming API.
+//
+// https://vk.com/dev/streaming.getServerUrl
+func (vk *VK) StreamingGetServerURL(params Params) (response StreamingGetServerURLResponse, err error) {
+ err = vk.RequestUnmarshal("streaming.getServerUrl", &response, params)
+ return
+}
+
+// StreamingGetSettingsResponse struct.
+type StreamingGetSettingsResponse struct {
+ MonthlyLimit string `json:"monthly_limit"`
+}
+
+// StreamingGetSettings allows to receive monthly tier for Streaming API.
+//
+// https://vk.com/dev/streaming.getSettings
+func (vk *VK) StreamingGetSettings(params Params) (response StreamingGetSettingsResponse, err error) {
+ err = vk.RequestUnmarshal("streaming.getSettings", &response, params)
+ return
+}
+
+// StreamingGetStatsResponse struct.
+type StreamingGetStatsResponse []struct {
+ EventType string `json:"event_type"`
+ Stats []struct {
+ Timestamp int `json:"timestamp"`
+ Value int `json:"value"`
+ } `json:"stats"`
+}
+
+// StreamingGetStats allows to receive statistics for prepared and received events in Streaming API.
+//
+// https://vk.com/dev/streaming.getStats
+func (vk *VK) StreamingGetStats(params Params) (response StreamingGetStatsResponse, err error) {
+ err = vk.RequestUnmarshal("streaming.getStats", &response, params)
+ return
+}
+
+// StreamingGetStemResponse struct.
+type StreamingGetStemResponse struct {
+ Stem string `json:"stem"`
+}
+
+// StreamingGetStem allows to receive the stem of the word.
+//
+// https://vk.com/dev/streaming.getStem
+func (vk *VK) StreamingGetStem(params Params) (response StreamingGetStemResponse, err error) {
+ err = vk.RequestUnmarshal("streaming.getStem", &response, params)
+ return
+}
+
+// StreamingSetSettings allows to set monthly tier for Streaming API.
+//
+// https://vk.com/dev/streaming.setSettings
+func (vk *VK) StreamingSetSettings(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("streaming.setSettings", &response, params)
+
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/upload.go b/vendor/github.com/SevereCloud/vksdk/v2/api/upload.go
new file mode 100644
index 00000000..2c947c5d
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/upload.go
@@ -0,0 +1,961 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "bytes"
+ "encoding/json"
+ "io"
+ "io/ioutil"
+ "mime/multipart"
+
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// UploadFile uploading file.
+func (vk *VK) UploadFile(url string, file io.Reader, fieldname, filename string) (bodyContent []byte, err error) {
+ body := new(bytes.Buffer)
+ writer := multipart.NewWriter(body)
+
+ part, err := writer.CreateFormFile(fieldname, filename)
+ if err != nil {
+ return
+ }
+
+ _, err = io.Copy(part, file)
+ if err != nil {
+ return
+ }
+
+ contentType := writer.FormDataContentType()
+ _ = writer.Close()
+
+ resp, err := vk.Client.Post(url, contentType, body)
+ if err != nil {
+ return
+ }
+ defer resp.Body.Close()
+
+ bodyContent, err = ioutil.ReadAll(resp.Body)
+
+ return
+}
+
+// uploadPhoto uploading Photos into Album.
+//
+// Supported formats: JPG, PNG, GIF.
+//
+// Limits: width+height not more than 14000 px, file size up to 50 Mb,
+// aspect ratio of at least 1:20.
+func (vk *VK) uploadPhoto(params Params, file io.Reader) (response PhotosSaveResponse, err error) {
+ uploadServer, err := vk.PhotosGetUploadServer(params)
+ if err != nil {
+ return
+ }
+
+ bodyContent, err := vk.UploadFile(uploadServer.UploadURL, file, "file1", "file1.jpeg")
+ if err != nil {
+ return
+ }
+
+ var handler object.PhotosPhotoUploadResponse
+
+ err = json.Unmarshal(bodyContent, &handler)
+ if err != nil {
+ return
+ }
+
+ response, err = vk.PhotosSave(Params{
+ "server": handler.Server,
+ "photos_list": handler.PhotosList,
+ "aid": handler.AID,
+ "hash": handler.Hash,
+ "album_id": params["album_id"],
+ "group_id": params["group_id"],
+ })
+
+ return
+}
+
+// UploadPhoto uploading Photos into User Album.
+//
+// Supported formats: JPG, PNG, GIF.
+//
+// Limits: width+height not more than 14000 px, file size up to 50 Mb,
+// aspect ratio of at least 1:20.
+func (vk *VK) UploadPhoto(albumID int, file io.Reader) (response PhotosSaveResponse, err error) {
+ response, err = vk.uploadPhoto(Params{
+ "album_id": albumID,
+ }, file)
+
+ return
+}
+
+// UploadPhotoGroup uploading Photos into Group Album.
+//
+// Supported formats: JPG, PNG, GIF.
+//
+// Limits: width+height not more than 14000 px, file size up to 50 Mb,
+// aspect ratio of at least 1:20.
+func (vk *VK) UploadPhotoGroup(groupID, albumID int, file io.Reader) (response PhotosSaveResponse, err error) {
+ response, err = vk.uploadPhoto(Params{
+ "album_id": albumID,
+ "group_id": groupID,
+ }, file)
+
+ return
+}
+
+// uploadWallPhoto uploading Photos on Wall.
+//
+// Supported formats: JPG, PNG, GIF.
+//
+// Limits: width+height not more than 14000 px, file size up to 50 Mb,
+// aspect ratio of at least 1:20.
+func (vk *VK) uploadWallPhoto(params Params, file io.Reader) (response PhotosSaveWallPhotoResponse, err error) {
+ uploadServer, err := vk.PhotosGetWallUploadServer(params)
+ if err != nil {
+ return
+ }
+
+ bodyContent, err := vk.UploadFile(uploadServer.UploadURL, file, "photo", "photo.jpeg")
+ if err != nil {
+ return
+ }
+
+ var handler object.PhotosWallUploadResponse
+
+ err = json.Unmarshal(bodyContent, &handler)
+ if err != nil {
+ return
+ }
+
+ response, err = vk.PhotosSaveWallPhoto(Params{
+ "server": handler.Server,
+ "photo": handler.Photo,
+ "hash": handler.Hash,
+ "group_id": params["group_id"],
+ })
+
+ return
+}
+
+// UploadWallPhoto uploading Photos on User Wall.
+//
+// Supported formats: JPG, PNG, GIF.
+//
+// Limits: width+height not more than 14000 px, file size up to 50 Mb,
+// aspect ratio of at least 1:20.
+func (vk *VK) UploadWallPhoto(file io.Reader) (response PhotosSaveWallPhotoResponse, err error) {
+ response, err = vk.uploadWallPhoto(Params{}, file)
+ return
+}
+
+// UploadGroupWallPhoto uploading Photos on Group Wall.
+//
+// Supported formats: JPG, PNG, GIF.
+//
+// Limits: width+height not more than 14000 px, file size up to 50 Mb,
+// aspect ratio of at least 1:20.
+func (vk *VK) UploadGroupWallPhoto(groupID int, file io.Reader) (response PhotosSaveWallPhotoResponse, err error) {
+ response, err = vk.uploadWallPhoto(Params{
+ "group_id": groupID,
+ }, file)
+
+ return
+}
+
+// uploadOwnerPhoto uploading Photos into User Profile or Community
+// To upload a photo to a community send its negative id in the owner_id parameter.
+//
+// Following parameters can be sent in addition:
+// squareCrop in x,y,w (no quotes) format where x and y are the coordinates of
+// the preview upper-right corner and w is square side length.
+// That will create a square preview for a photo.
+//
+// Supported formats: JPG, PNG, GIF.
+//
+// Limits: size not less than 200x200px, aspect ratio from 0.25 to 3,
+// width+height not more than 14000 px, file size up to 50 Mb.
+func (vk *VK) uploadOwnerPhoto(params Params, squareCrop string, file io.Reader) (
+ response PhotosSaveOwnerPhotoResponse,
+ err error,
+) {
+ uploadServer, err := vk.PhotosGetOwnerPhotoUploadServer(params)
+ if err != nil {
+ return
+ }
+
+ body := new(bytes.Buffer)
+ writer := multipart.NewWriter(body)
+
+ part, err := writer.CreateFormFile("photo", "photo.jpeg")
+ if err != nil {
+ return
+ }
+
+ _, err = io.Copy(part, file)
+ if err != nil {
+ return
+ }
+
+ contentType := writer.FormDataContentType()
+
+ if squareCrop != "" {
+ err = writer.WriteField("_square_crop", squareCrop)
+ if err != nil {
+ return
+ }
+ }
+
+ _ = writer.Close()
+
+ resp, err := vk.Client.Post(uploadServer.UploadURL, contentType, body)
+ if err != nil {
+ return
+ }
+ defer resp.Body.Close()
+
+ bodyContent, err := ioutil.ReadAll(resp.Body)
+ if err != nil {
+ return
+ }
+
+ var handler object.PhotosOwnerUploadResponse
+
+ err = json.Unmarshal(bodyContent, &handler)
+ if err != nil {
+ return
+ }
+
+ response, err = vk.PhotosSaveOwnerPhoto(Params{
+ "server": handler.Server,
+ "photo": handler.Photo,
+ "hash": handler.Hash,
+ })
+
+ return response, err
+}
+
+// UploadUserPhoto uploading Photos into User Profile.
+//
+// Supported formats: JPG, PNG, GIF.
+//
+// Limits: size not less than 200x200px, aspect ratio from 0.25 to 3,
+// width+height not more than 14000 px, file size up to 50 Mb.
+func (vk *VK) UploadUserPhoto(file io.Reader) (response PhotosSaveOwnerPhotoResponse, err error) {
+ response, err = vk.uploadOwnerPhoto(Params{}, "", file)
+ return
+}
+
+// UploadOwnerPhoto uploading Photos into User Profile or Community
+// To upload a photo to a community send its negative id in the owner_id parameter.
+//
+// Following parameters can be sent in addition:
+// squareCrop in x,y,w (no quotes) format where x and y are the coordinates of
+// the preview upper-right corner and w is square side length.
+// That will create a square preview for a photo.
+//
+// Supported formats: JPG, PNG, GIF.
+//
+// Limits: size not less than 200x200px, aspect ratio from 0.25 to 3,
+// width+height not more than 14000 px, file size up to 50 Mb.
+func (vk *VK) UploadOwnerPhoto(ownerID int, squareCrop string, file io.Reader) (
+ response PhotosSaveOwnerPhotoResponse,
+ err error,
+) {
+ response, err = vk.uploadOwnerPhoto(Params{
+ "owner_id": ownerID,
+ }, squareCrop, file)
+
+ return
+}
+
+// UploadMessagesPhoto uploading Photos into a Private Message.
+//
+// Supported formats: JPG, PNG, GIF.
+//
+// Limits: width+height not more than 14000 px, file size up to 50 Mb,
+// aspect ratio of at least 1:20.
+func (vk *VK) UploadMessagesPhoto(peerID int, file io.Reader) (response PhotosSaveMessagesPhotoResponse, err error) {
+ uploadServer, err := vk.PhotosGetMessagesUploadServer(Params{
+ "peer_id": peerID,
+ })
+ if err != nil {
+ return
+ }
+
+ bodyContent, err := vk.UploadFile(uploadServer.UploadURL, file, "photo", "photo.jpeg")
+ if err != nil {
+ return
+ }
+
+ var handler object.PhotosMessageUploadResponse
+
+ err = json.Unmarshal(bodyContent, &handler)
+ if err != nil {
+ return
+ }
+
+ response, err = vk.PhotosSaveMessagesPhoto(Params{
+ "server": handler.Server,
+ "photo": handler.Photo,
+ "hash": handler.Hash,
+ })
+
+ return
+}
+
+// uploadChatPhoto uploading a Main Photo to a Group Chat.
+//
+// Supported formats: JPG, PNG, GIF.
+//
+// Limits: size not less than 200x200px,
+// width+height not more than 14000 px, file size up to 50 Mb,
+// aspect ratio of at least 1:20.
+func (vk *VK) uploadChatPhoto(params Params, file io.Reader) (response MessagesSetChatPhotoResponse, err error) {
+ uploadServer, err := vk.PhotosGetChatUploadServer(params)
+ if err != nil {
+ return
+ }
+
+ bodyContent, err := vk.UploadFile(uploadServer.UploadURL, file, "file", "photo.jpeg")
+ if err != nil {
+ return
+ }
+
+ var handler object.PhotosChatUploadResponse
+
+ err = json.Unmarshal(bodyContent, &handler)
+ if err != nil {
+ return
+ }
+
+ response, err = vk.MessagesSetChatPhoto(Params{
+ "file": handler.Response,
+ })
+
+ return
+}
+
+// UploadChatPhoto uploading a Main Photo to a Group Chat without crop.
+//
+// Supported formats: JPG, PNG, GIF.
+//
+// Limits: size not less than 200x200px,
+// width+height not more than 14000 px, file size up to 50 Mb,
+// aspect ratio of at least 1:20.
+func (vk *VK) UploadChatPhoto(chatID int, file io.Reader) (response MessagesSetChatPhotoResponse, err error) {
+ response, err = vk.uploadChatPhoto(Params{
+ "chat_id": chatID,
+ }, file)
+
+ return
+}
+
+// UploadChatPhotoCrop uploading a Main Photo to a Group Chat with crop.
+//
+// Supported formats: JPG, PNG, GIF.
+//
+// Limits: size not less than 200x200px,
+// width+height not more than 14000 px, file size up to 50 Mb,
+// aspect ratio of at least 1:20.
+func (vk *VK) UploadChatPhotoCrop(chatID, cropX, cropY, cropWidth int, file io.Reader) (
+ response MessagesSetChatPhotoResponse,
+ err error,
+) {
+ response, err = vk.uploadChatPhoto(Params{
+ "chat_id": chatID,
+ "crop_x": cropX,
+ "crop_y": cropY,
+ "crop_width": cropWidth,
+ }, file)
+
+ return
+}
+
+// uploadMarketPhoto uploading a Market Item Photo.
+//
+// Supported formats: JPG, PNG, GIF.
+//
+// Limits: size not less than 400x400px,
+// width+height not more than 14000 px, file size up to 50 Mb,
+// aspect ratio of at least 1:20.
+func (vk *VK) uploadMarketPhoto(params Params, file io.Reader) (response PhotosSaveMarketPhotoResponse, err error) {
+ uploadServer, err := vk.PhotosGetMarketUploadServer(params)
+ if err != nil {
+ return
+ }
+
+ bodyContent, err := vk.UploadFile(uploadServer.UploadURL, file, "file", "photo.jpeg")
+ if err != nil {
+ return
+ }
+
+ var handler object.PhotosMarketUploadResponse
+
+ err = json.Unmarshal(bodyContent, &handler)
+ if err != nil {
+ return
+ }
+
+ response, err = vk.PhotosSaveMarketPhoto(Params{
+ "group_id": params["group_id"],
+ "server": handler.Server,
+ "photo": handler.Photo,
+ "hash": handler.Hash,
+ "crop_data": handler.CropData,
+ "crop_hash": handler.CropHash,
+ })
+
+ return
+}
+
+// UploadMarketPhoto uploading a Market Item Photo without crop.
+//
+// Supported formats: JPG, PNG, GIF.
+//
+// Limits: size not less than 400x400px,
+// width+height not more than 14000 px, file size up to 50 Mb,
+// aspect ratio of at least 1:20.
+func (vk *VK) UploadMarketPhoto(groupID int, mainPhoto bool, file io.Reader) (
+ response PhotosSaveMarketPhotoResponse,
+ err error,
+) {
+ response, err = vk.uploadMarketPhoto(Params{
+ "group_id": groupID,
+ "main_photo": mainPhoto,
+ }, file)
+
+ return
+}
+
+// UploadMarketPhotoCrop uploading a Market Item Photo with crop.
+//
+// Supported formats: JPG, PNG, GIF.
+//
+// Limits: size not less than 400x400px,
+// width+height not more than 14000 px, file size up to 50 Mb,
+// aspect ratio of at least 1:20.
+func (vk *VK) UploadMarketPhotoCrop(groupID, cropX, cropY, cropWidth int, file io.Reader) (
+ response PhotosSaveMarketPhotoResponse,
+ err error,
+) {
+ response, err = vk.uploadMarketPhoto(Params{
+ "group_id": groupID,
+ "main_photo": true,
+ "crop_x": cropX,
+ "crop_y": cropY,
+ "crop_width": cropWidth,
+ }, file)
+
+ return
+}
+
+// UploadMarketAlbumPhoto uploading a Main Photo to a Group Chat.
+//
+// Supported formats: JPG, PNG, GIF.
+//
+// Limits: size not less than 1280x720px,
+// width+height not more than 14000 px, file size up to 50 Mb,
+// aspect ratio of at least 1:20.
+func (vk *VK) UploadMarketAlbumPhoto(groupID int, file io.Reader) (
+ response PhotosSaveMarketAlbumPhotoResponse,
+ err error,
+) {
+ uploadServer, err := vk.PhotosGetMarketAlbumUploadServer(Params{
+ "group_id": groupID,
+ })
+ if err != nil {
+ return
+ }
+
+ bodyContent, err := vk.UploadFile(uploadServer.UploadURL, file, "file", "photo.jpeg")
+ if err != nil {
+ return
+ }
+
+ var handler object.PhotosMarketAlbumUploadResponse
+
+ err = json.Unmarshal(bodyContent, &handler)
+ if err != nil {
+ return
+ }
+
+ return vk.PhotosSaveMarketAlbumPhoto(Params{
+ "group_id": groupID,
+ "server": handler.Server,
+ "photo": handler.Photo,
+ "hash": handler.Hash,
+ })
+}
+
+// UploadVideo uploading Video Files.
+//
+// Supported formats: AVI, MP4, 3GP, MPEG, MOV, FLV, WMV.
+func (vk *VK) UploadVideo(params Params, file io.Reader) (response VideoSaveResponse, err error) {
+ response, err = vk.VideoSave(params)
+ if err != nil {
+ return
+ }
+
+ bodyContent, err := vk.UploadFile(response.UploadURL, file, "video_file", "video.mp4")
+ if err != nil {
+ return
+ }
+
+ var videoUploadError UploadError
+
+ err = json.Unmarshal(bodyContent, &videoUploadError)
+ if err != nil {
+ return
+ }
+
+ if videoUploadError.Code != 0 {
+ err = &videoUploadError
+ }
+
+ return
+}
+
+// uploadDoc uploading Documents.
+//
+// Supported formats: any formats excepting mp3 and executable files.
+//
+// Limits: file size up to 200 MB.
+func (vk *VK) uploadDoc(url, title, tags string, file io.Reader) (response DocsSaveResponse, err error) {
+ bodyContent, err := vk.UploadFile(url, file, "file", title)
+ if err != nil {
+ return
+ }
+
+ var docUploadError UploadError
+
+ err = json.Unmarshal(bodyContent, &docUploadError)
+ if err != nil {
+ return
+ }
+
+ if docUploadError.Err != "" {
+ err = &docUploadError
+ return
+ }
+
+ var handler object.DocsDocUploadResponse
+
+ err = json.Unmarshal(bodyContent, &handler)
+ if err != nil {
+ return
+ }
+
+ response, err = vk.DocsSave(Params{
+ "file": handler.File,
+ "title": title,
+ "tags": tags,
+ })
+
+ return response, err
+}
+
+// UploadDoc uploading Documents.
+//
+// Supported formats: any formats excepting mp3 and executable files.
+//
+// Limits: file size up to 200 MB.
+func (vk *VK) UploadDoc(title, tags string, file io.Reader) (response DocsSaveResponse, err error) {
+ uploadServer, err := vk.DocsGetUploadServer(nil)
+ if err != nil {
+ return
+ }
+
+ response, err = vk.uploadDoc(uploadServer.UploadURL, title, tags, file)
+
+ return
+}
+
+// UploadGroupDoc uploading Documents into Community.
+//
+// Supported formats: any formats excepting mp3 and executable files.
+//
+// Limits: file size up to 200 MB.
+func (vk *VK) UploadGroupDoc(groupID int, title, tags string, file io.Reader) (response DocsSaveResponse, err error) {
+ uploadServer, err := vk.DocsGetUploadServer(Params{
+ "group_id": groupID,
+ })
+ if err != nil {
+ return
+ }
+
+ response, err = vk.uploadDoc(uploadServer.UploadURL, title, tags, file)
+
+ return
+}
+
+// UploadWallDoc uploading Documents on Wall.
+//
+// Supported formats: any formats excepting mp3 and executable files.
+//
+// Limits: file size up to 200 MB.
+func (vk *VK) UploadWallDoc(title, tags string, file io.Reader) (response DocsSaveResponse, err error) {
+ uploadServer, err := vk.DocsGetWallUploadServer(nil)
+ if err != nil {
+ return
+ }
+
+ response, err = vk.uploadDoc(uploadServer.UploadURL, title, tags, file)
+
+ return
+}
+
+// UploadGroupWallDoc uploading Documents on Group Wall.
+//
+// Supported formats: any formats excepting mp3 and executable files.
+//
+// Limits: file size up to 200 MB.
+func (vk *VK) UploadGroupWallDoc(groupID int, title, tags string, file io.Reader) (
+ response DocsSaveResponse,
+ err error,
+) {
+ uploadServer, err := vk.DocsGetWallUploadServer(Params{
+ "group_id": groupID,
+ })
+ if err != nil {
+ return
+ }
+
+ response, err = vk.uploadDoc(uploadServer.UploadURL, title, tags, file)
+
+ return
+}
+
+// UploadMessagesDoc uploading Documents into a Private Message.
+//
+// Supported formats: any formats excepting mp3 and executable files.
+//
+// Limits: file size up to 200 MB.
+func (vk *VK) UploadMessagesDoc(peerID int, typeDoc, title, tags string, file io.Reader) (
+ response DocsSaveResponse,
+ err error,
+) {
+ uploadServer, err := vk.DocsGetMessagesUploadServer(Params{
+ "peer_id": peerID,
+ "type": typeDoc,
+ })
+ if err != nil {
+ return
+ }
+
+ response, err = vk.uploadDoc(uploadServer.UploadURL, title, tags, file)
+
+ return
+}
+
+// UploadOwnerCoverPhoto uploading a Main Photo to a Group Chat.
+//
+// Supported formats: JPG, PNG, GIF.
+//
+// Limits: minimum photo size 795x200px, width+height not more than 14000px,
+// file size up to 50 MB. Recommended size: 1590x400px.
+func (vk *VK) UploadOwnerCoverPhoto(groupID, cropX, cropY, cropX2, cropY2 int, file io.Reader) (
+ response PhotosSaveOwnerCoverPhotoResponse,
+ err error,
+) {
+ uploadServer, err := vk.PhotosGetOwnerCoverPhotoUploadServer(Params{
+ "group_id": groupID,
+ "crop_x": cropX,
+ "crop_y": cropY,
+ "crop_x2": cropX2,
+ "crop_y2": cropY2,
+ })
+ if err != nil {
+ return
+ }
+
+ bodyContent, err := vk.UploadFile(uploadServer.UploadURL, file, "photo", "photo.jpeg")
+ if err != nil {
+ return
+ }
+
+ var handler object.PhotosOwnerUploadResponse
+
+ err = json.Unmarshal(bodyContent, &handler)
+ if err != nil {
+ return
+ }
+
+ return vk.PhotosSaveOwnerCoverPhoto(Params{
+ "photo": handler.Photo,
+ "hash": handler.Hash,
+ })
+}
+
+// UploadStories struct.
+type UploadStories struct {
+ UploadResult string `json:"upload_result"`
+ Sig string `json:"_sig"`
+}
+
+type rawUploadStoriesPhoto struct {
+ Response UploadStories `json:"response"`
+ Error struct {
+ ErrorCode int `json:"error_code"`
+ Type string `json:"type"`
+ } `json:"error"`
+}
+
+type rawUploadStoriesVideo struct {
+ Response UploadStories `json:"response"`
+ UploadError
+}
+
+// UploadStoriesPhoto uploading Story.
+//
+// Supported formats: JPG, PNG, GIF.
+// Limits: sum of with and height no more than 14000px, file size no
+// more than 10 MB. Video format: h264 video, aac audio,
+// maximum 720х1280, 30fps.
+//
+// https://vk.com/dev/stories.getPhotoUploadServer
+func (vk *VK) UploadStoriesPhoto(params Params, file io.Reader) (response StoriesSaveResponse, err error) {
+ uploadServer, err := vk.StoriesGetPhotoUploadServer(params)
+ if err != nil {
+ return
+ }
+
+ bodyContent, err := vk.UploadFile(uploadServer.UploadURL, file, "file", "file.jpeg")
+ if err != nil {
+ return
+ }
+
+ var handler rawUploadStoriesPhoto
+
+ err = json.Unmarshal(bodyContent, &handler)
+ if err != nil {
+ return
+ }
+
+ if handler.Error.ErrorCode != 0 {
+ err = &UploadError{
+ Code: handler.Error.ErrorCode,
+ Err: handler.Error.Type,
+ }
+
+ return response, err
+ }
+
+ response, err = vk.StoriesSave(Params{
+ "upload_results": handler.Response.UploadResult,
+ })
+
+ return response, err
+}
+
+// UploadStoriesVideo uploading Story.
+//
+// Video format: h264 video, aac audio, maximum 720х1280, 30fps.
+func (vk *VK) UploadStoriesVideo(params Params, file io.Reader) (response StoriesSaveResponse, err error) {
+ uploadServer, err := vk.StoriesGetVideoUploadServer(params)
+ if err != nil {
+ return
+ }
+
+ bodyContent, err := vk.UploadFile(uploadServer.UploadURL, file, "video_file", "video.mp4")
+ if err != nil {
+ return
+ }
+
+ var handler rawUploadStoriesVideo
+
+ err = json.Unmarshal(bodyContent, &handler)
+ if err != nil {
+ return
+ }
+
+ if handler.UploadError.Code != 0 {
+ return response, &handler.UploadError
+ }
+
+ response, err = vk.StoriesSave(Params{
+ "upload_results": handler.Response.UploadResult,
+ })
+
+ return response, err
+}
+
+// uploadPollsPhoto uploading a Poll Photo.
+//
+// Supported formats: JPG, PNG, GIF.
+//
+// Limits: minimum photo size 795x200px, width+height not more than 14000px,
+// file size up to 50 MB. Recommended size: 1590x400px.
+func (vk *VK) uploadPollsPhoto(params Params, file io.Reader) (response PollsSavePhotoResponse, err error) {
+ uploadServer, err := vk.PollsGetPhotoUploadServer(params)
+ if err != nil {
+ return
+ }
+
+ bodyContent, err := vk.UploadFile(uploadServer.UploadURL, file, "photo", "photo.jpeg")
+ if err != nil {
+ return
+ }
+
+ var handler object.PollsPhotoUploadResponse
+
+ err = json.Unmarshal(bodyContent, &handler)
+ if err != nil {
+ return
+ }
+
+ response, err = vk.PollsSavePhoto(Params{
+ "photo": handler.Photo,
+ "hash": handler.Hash,
+ })
+
+ return
+}
+
+// UploadPollsPhoto uploading a Poll Photo.
+//
+// Supported formats: JPG, PNG, GIF.
+//
+// Limits: minimum photo size 795x200px, width+height not more than 14000px,
+// file size up to 50 MB. Recommended size: 1590x400px.
+func (vk *VK) UploadPollsPhoto(file io.Reader) (response PollsSavePhotoResponse, err error) {
+ return vk.uploadPollsPhoto(Params{}, file)
+}
+
+// UploadOwnerPollsPhoto uploading a Poll Photo.
+//
+// Supported formats: JPG, PNG, GIF.
+//
+// Limits: minimum photo size 795x200px, width+height not more than 14000px,
+// file size up to 50 MB. Recommended size: 1590x400px.
+func (vk *VK) UploadOwnerPollsPhoto(ownerID int, file io.Reader) (response PollsSavePhotoResponse, err error) {
+ return vk.uploadPollsPhoto(Params{"owner_id": ownerID}, file)
+}
+
+type uploadPrettyCardsPhotoHandler struct {
+ Photo string `json:"photo"`
+ ErrCode int `json:"errcode"`
+}
+
+// UploadPrettyCardsPhoto uploading a Pretty Card Photo.
+//
+// Supported formats: JPG, PNG, GIF.
+func (vk *VK) UploadPrettyCardsPhoto(file io.Reader) (response string, err error) {
+ uploadURL, err := vk.PrettyCardsGetUploadURL(nil)
+ if err != nil {
+ return
+ }
+
+ bodyContent, err := vk.UploadFile(uploadURL, file, "file", "photo.jpg")
+ if err != nil {
+ return
+ }
+
+ var handler uploadPrettyCardsPhotoHandler
+
+ err = json.Unmarshal(bodyContent, &handler)
+ if err != nil {
+ return
+ }
+
+ response = handler.Photo
+
+ if handler.ErrCode != 0 {
+ err = &UploadError{Code: handler.ErrCode}
+ }
+
+ return
+}
+
+type uploadLeadFormsPhotoHandler struct {
+ Photo string `json:"photo"`
+ ErrCode int `json:"errcode"`
+}
+
+// UploadLeadFormsPhoto uploading a Pretty Card Photo.
+//
+// Supported formats: JPG, PNG, GIF.
+func (vk *VK) UploadLeadFormsPhoto(file io.Reader) (response string, err error) {
+ uploadURL, err := vk.LeadFormsGetUploadURL(nil)
+ if err != nil {
+ return
+ }
+
+ bodyContent, err := vk.UploadFile(uploadURL, file, "file", "photo.jpg")
+ if err != nil {
+ return
+ }
+
+ var handler uploadLeadFormsPhotoHandler
+
+ err = json.Unmarshal(bodyContent, &handler)
+ if err != nil {
+ return
+ }
+
+ response = handler.Photo
+
+ if handler.ErrCode != 0 {
+ err = &UploadError{Code: handler.ErrCode}
+ }
+
+ return
+}
+
+// UploadAppImage uploading a Image into App collection for community app widgets.
+func (vk *VK) UploadAppImage(imageType string, file io.Reader) (response object.AppWidgetsImage, err error) {
+ uploadServer, err := vk.AppWidgetsGetAppImageUploadServer(Params{
+ "image_type": imageType,
+ })
+ if err != nil {
+ return
+ }
+
+ bodyContent, err := vk.UploadFile(uploadServer.UploadURL, file, "image", "photo.jpeg")
+ if err != nil {
+ return
+ }
+
+ var handler object.AppWidgetsAppImageUploadResponse
+
+ err = json.Unmarshal(bodyContent, &handler)
+ if err != nil {
+ return
+ }
+
+ response, err = vk.AppWidgetsSaveAppImage(Params{
+ "image": handler.Image,
+ "hash": handler.Hash,
+ })
+
+ return
+}
+
+// UploadGroupImage uploading a Image into Community collection for community app widgets.
+func (vk *VK) UploadGroupImage(imageType string, file io.Reader) (response object.AppWidgetsImage, err error) {
+ uploadServer, err := vk.AppWidgetsGetGroupImageUploadServer(Params{
+ "image_type": imageType,
+ })
+ if err != nil {
+ return
+ }
+
+ bodyContent, err := vk.UploadFile(uploadServer.UploadURL, file, "image", "photo.jpeg")
+ if err != nil {
+ return
+ }
+
+ var handler object.AppWidgetsGroupImageUploadResponse
+
+ err = json.Unmarshal(bodyContent, &handler)
+ if err != nil {
+ return
+ }
+
+ response, err = vk.AppWidgetsSaveGroupImage(Params{
+ "image": handler.Image,
+ "hash": handler.Hash,
+ })
+
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/users.go b/vendor/github.com/SevereCloud/vksdk/v2/api/users.go
new file mode 100644
index 00000000..2251d562
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/users.go
@@ -0,0 +1,104 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// UsersGetResponse users.get response.
+type UsersGetResponse []object.UsersUser
+
+// UsersGet returns detailed information on users.
+//
+// https://vk.com/dev/users.get
+func (vk *VK) UsersGet(params Params) (response UsersGetResponse, err error) {
+ err = vk.RequestUnmarshal("users.get", &response, params)
+ return
+}
+
+// UsersGetFollowersResponse struct.
+type UsersGetFollowersResponse struct {
+ Count int `json:"count"`
+ Items []int `json:"items"`
+}
+
+// UsersGetFollowers returns a list of IDs of followers of the user in
+// question, sorted by date added, most recent first.
+//
+// fields="";
+//
+// https://vk.com/dev/users.getFollowers
+func (vk *VK) UsersGetFollowers(params Params) (response UsersGetFollowersResponse, err error) {
+ err = vk.RequestUnmarshal("users.getFollowers", &response, params, Params{"fields": ""})
+
+ return
+}
+
+// UsersGetFollowersFieldsResponse struct.
+type UsersGetFollowersFieldsResponse struct {
+ Count int `json:"count"`
+ Items []object.UsersUser `json:"items"`
+}
+
+// UsersGetFollowersFields returns a list of IDs of followers of the user in
+// question, sorted by date added, most recent first.
+//
+// fields not empty.
+//
+// https://vk.com/dev/users.getFollowers
+func (vk *VK) UsersGetFollowersFields(params Params) (response UsersGetFollowersFieldsResponse, err error) {
+ reqParams := make(Params)
+ if v, prs := params["fields"]; v == "" || !prs {
+ reqParams["fields"] = "id"
+ }
+
+ err = vk.RequestUnmarshal("users.getFollowers", &response, params, reqParams)
+
+ return
+}
+
+// UsersGetSubscriptionsResponse struct.
+type UsersGetSubscriptionsResponse struct {
+ Users struct {
+ Count int `json:"count"`
+ Items []int `json:"items"`
+ } `json:"users"`
+ Groups struct {
+ Count int `json:"count"`
+ Items []int `json:"items"`
+ } `json:"groups"`
+}
+
+// UsersGetSubscriptions returns a list of IDs of users and public pages followed by the user.
+//
+// extended=0
+//
+// https://vk.com/dev/users.getSubscriptions
+//
+// BUG(SevereCloud): UsersGetSubscriptions bad response with extended=1.
+func (vk *VK) UsersGetSubscriptions(params Params) (response UsersGetSubscriptionsResponse, err error) {
+ err = vk.RequestUnmarshal("users.getSubscriptions", &response, params, Params{"extended": false})
+
+ return
+}
+
+// UsersReport reports (submits a complain about) a user.
+//
+// https://vk.com/dev/users.report
+func (vk *VK) UsersReport(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("users.report", &response, params)
+ return
+}
+
+// UsersSearchResponse struct.
+type UsersSearchResponse struct {
+ Count int `json:"count"`
+ Items []object.UsersUser `json:"items"`
+}
+
+// UsersSearch returns a list of users matching the search criteria.
+//
+// https://vk.com/dev/users.search
+func (vk *VK) UsersSearch(params Params) (response UsersSearchResponse, err error) {
+ err = vk.RequestUnmarshal("users.search", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/utils.go b/vendor/github.com/SevereCloud/vksdk/v2/api/utils.go
new file mode 100644
index 00000000..63508fe2
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/utils.go
@@ -0,0 +1,105 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "encoding/json"
+
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// UtilsCheckLinkResponse struct.
+type UtilsCheckLinkResponse object.UtilsLinkChecked
+
+// UtilsCheckLink checks whether a link is blocked in VK.
+//
+// https://vk.com/dev/utils.checkLink
+func (vk *VK) UtilsCheckLink(params Params) (response UtilsCheckLinkResponse, err error) {
+ err = vk.RequestUnmarshal("utils.checkLink", &response, params)
+ return
+}
+
+// UtilsDeleteFromLastShortened deletes shortened link from user's list.
+//
+// https://vk.com/dev/utils.deleteFromLastShortened
+func (vk *VK) UtilsDeleteFromLastShortened(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("utils.deleteFromLastShortened", &response, params)
+ return
+}
+
+// UtilsGetLastShortenedLinksResponse struct.
+type UtilsGetLastShortenedLinksResponse struct {
+ Count int `json:"count"`
+ Items []object.UtilsLastShortenedLink `json:"items"`
+}
+
+// UtilsGetLastShortenedLinks returns a list of user's shortened links.
+//
+// https://vk.com/dev/utils.getLastShortenedLinks
+func (vk *VK) UtilsGetLastShortenedLinks(params Params) (response UtilsGetLastShortenedLinksResponse, err error) {
+ err = vk.RequestUnmarshal("utils.getLastShortenedLinks", &response, params)
+ return
+}
+
+// UtilsGetLinkStatsResponse struct.
+type UtilsGetLinkStatsResponse object.UtilsLinkStats
+
+// UtilsGetLinkStats returns stats data for shortened link.
+//
+// extended=0
+//
+// https://vk.com/dev/utils.getLinkStats
+func (vk *VK) UtilsGetLinkStats(params Params) (response UtilsGetLinkStatsResponse, err error) {
+ err = vk.RequestUnmarshal("utils.getLinkStats", &response, params, Params{"extended": false})
+
+ return
+}
+
+// UtilsGetLinkStatsExtendedResponse struct.
+type UtilsGetLinkStatsExtendedResponse object.UtilsLinkStatsExtended
+
+// UtilsGetLinkStatsExtended returns stats data for shortened link.
+//
+// extended=1
+//
+// https://vk.com/dev/utils.getLinkStats
+func (vk *VK) UtilsGetLinkStatsExtended(params Params) (response UtilsGetLinkStatsExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("utils.getLinkStats", &response, params, Params{"extended": true})
+
+ return
+}
+
+// UtilsGetServerTime returns the current time of the VK server.
+//
+// https://vk.com/dev/utils.getServerTime
+func (vk *VK) UtilsGetServerTime(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("utils.getServerTime", &response, params)
+ return
+}
+
+// UtilsGetShortLinkResponse struct.
+type UtilsGetShortLinkResponse object.UtilsShortLink
+
+// UtilsGetShortLink allows to receive a link shortened via vk.cc.
+//
+// https://vk.com/dev/utils.getShortLink
+func (vk *VK) UtilsGetShortLink(params Params) (response UtilsGetShortLinkResponse, err error) {
+ err = vk.RequestUnmarshal("utils.getShortLink", &response, params)
+ return
+}
+
+// UtilsResolveScreenNameResponse struct.
+type UtilsResolveScreenNameResponse object.UtilsDomainResolved
+
+// UtilsResolveScreenName detects a type of object (e.g., user, community, application) and its ID by screen name.
+//
+// https://vk.com/dev/utils.resolveScreenName
+func (vk *VK) UtilsResolveScreenName(params Params) (response UtilsResolveScreenNameResponse, err error) {
+ rawResponse, err := vk.Request("utils.resolveScreenName", params)
+ // Если короткое имя screen_name не занято, то будет возвращён пустой объект.
+ if err != nil || string(rawResponse) == "[]" {
+ return
+ }
+
+ err = json.Unmarshal(rawResponse, &response)
+
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/video.go b/vendor/github.com/SevereCloud/vksdk/v2/api/video.go
new file mode 100644
index 00000000..b6e85b9a
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/video.go
@@ -0,0 +1,338 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// VideoAdd adds a video to a user or community page.
+//
+// https://vk.com/dev/video.add
+func (vk *VK) VideoAdd(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("video.add", &response, params)
+ return
+}
+
+// VideoAddAlbumResponse struct.
+type VideoAddAlbumResponse struct {
+ AlbumID int `json:"album_id"`
+}
+
+// VideoAddAlbum creates an empty album for videos.
+//
+// https://vk.com/dev/video.addAlbum
+func (vk *VK) VideoAddAlbum(params Params) (response VideoAddAlbumResponse, err error) {
+ err = vk.RequestUnmarshal("video.addAlbum", &response, params)
+ return
+}
+
+// VideoAddToAlbum allows you to add a video to the album.
+//
+// https://vk.com/dev/video.addToAlbum
+func (vk *VK) VideoAddToAlbum(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("video.addToAlbum", &response, params)
+ return
+}
+
+// VideoCreateComment adds a new comment on a video.
+//
+// https://vk.com/dev/video.createComment
+func (vk *VK) VideoCreateComment(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("video.createComment", &response, params)
+ return
+}
+
+// VideoDelete deletes a video from a user or community page.
+//
+// https://vk.com/dev/video.delete
+func (vk *VK) VideoDelete(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("video.delete", &response, params)
+ return
+}
+
+// VideoDeleteAlbum deletes a video album.
+//
+// https://vk.com/dev/video.deleteAlbum
+func (vk *VK) VideoDeleteAlbum(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("video.deleteAlbum", &response, params)
+ return
+}
+
+// VideoDeleteComment deletes a comment on a video.
+//
+// https://vk.com/dev/video.deleteComment
+func (vk *VK) VideoDeleteComment(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("video.deleteComment", &response, params)
+ return
+}
+
+// VideoEdit edits information about a video on a user or community page.
+//
+// https://vk.com/dev/video.edit
+func (vk *VK) VideoEdit(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("video.edit", &response, params)
+ return
+}
+
+// VideoEditAlbum edits the title of a video album.
+//
+// https://vk.com/dev/video.editAlbum
+func (vk *VK) VideoEditAlbum(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("video.editAlbum", &response, params)
+ return
+}
+
+// VideoEditComment edits the text of a comment on a video.
+//
+// https://vk.com/dev/video.editComment
+func (vk *VK) VideoEditComment(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("video.editComment", &response, params)
+ return
+}
+
+// VideoGetResponse struct.
+type VideoGetResponse struct {
+ Count int `json:"count"`
+ Items []object.VideoVideo `json:"items"`
+}
+
+// VideoGet returns detailed information about videos.
+//
+// extended=0
+//
+// https://vk.com/dev/video.get
+func (vk *VK) VideoGet(params Params) (response VideoGetResponse, err error) {
+ err = vk.RequestUnmarshal("video.get", &response, params, Params{"extended": false})
+
+ return
+}
+
+// VideoGetExtendedResponse struct.
+type VideoGetExtendedResponse struct {
+ Count int `json:"count"`
+ Items []object.VideoVideo `json:"items"`
+ object.ExtendedResponse
+}
+
+// VideoGetExtended returns detailed information about videos.
+//
+// extended=1
+//
+// https://vk.com/dev/video.get
+func (vk *VK) VideoGetExtended(params Params) (response VideoGetExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("video.get", &response, params, Params{"extended": true})
+
+ return
+}
+
+// VideoGetAlbumByIDResponse struct.
+type VideoGetAlbumByIDResponse object.VideoVideoAlbumFull
+
+// VideoGetAlbumByID returns video album info.
+//
+// https://vk.com/dev/video.getAlbumById
+func (vk *VK) VideoGetAlbumByID(params Params) (response VideoGetAlbumByIDResponse, err error) {
+ err = vk.RequestUnmarshal("video.getAlbumById", &response, params)
+ return
+}
+
+// VideoGetAlbumsResponse struct.
+type VideoGetAlbumsResponse struct {
+ Count int `json:"count"`
+ Items []object.VideoVideoAlbum `json:"items"`
+}
+
+// VideoGetAlbums returns a list of video albums owned by a user or community.
+//
+// extended=0
+//
+// https://vk.com/dev/video.getAlbums
+func (vk *VK) VideoGetAlbums(params Params) (response VideoGetAlbumsResponse, err error) {
+ err = vk.RequestUnmarshal("video.getAlbums", &response, params, Params{"extended": false})
+
+ return
+}
+
+// VideoGetAlbumsExtendedResponse struct.
+type VideoGetAlbumsExtendedResponse struct {
+ Count int `json:"count"`
+ Items []object.VideoVideoAlbumFull `json:"items"`
+}
+
+// VideoGetAlbumsExtended returns a list of video albums owned by a user or community.
+//
+// extended=1
+//
+// https://vk.com/dev/video.getAlbums
+func (vk *VK) VideoGetAlbumsExtended(params Params) (response VideoGetAlbumsExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("video.getAlbums", &response, params, Params{"extended": true})
+
+ return
+}
+
+// VideoGetAlbumsByVideoResponse struct.
+type VideoGetAlbumsByVideoResponse []int
+
+// VideoGetAlbumsByVideo returns a list of albums in which the video is located.
+//
+// extended=0
+//
+// https://vk.com/dev/video.getAlbumsByVideo
+func (vk *VK) VideoGetAlbumsByVideo(params Params) (response VideoGetAlbumsByVideoResponse, err error) {
+ err = vk.RequestUnmarshal("video.getAlbumsByVideo", &response, params, Params{"extended": false})
+
+ return
+}
+
+// VideoGetAlbumsByVideoExtendedResponse struct.
+type VideoGetAlbumsByVideoExtendedResponse struct {
+ Count int `json:"count"`
+ Items []object.VideoVideoAlbumFull `json:"items"`
+}
+
+// VideoGetAlbumsByVideoExtended returns a list of albums in which the video is located.
+//
+// extended=1
+//
+// https://vk.com/dev/video.getAlbumsByVideo
+func (vk *VK) VideoGetAlbumsByVideoExtended(params Params) (response VideoGetAlbumsByVideoExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("video.getAlbumsByVideo", &response, params, Params{"extended": true})
+
+ return
+}
+
+// VideoGetCommentsResponse struct.
+type VideoGetCommentsResponse struct {
+ Count int `json:"count"`
+ Items []object.WallWallComment `json:"items"`
+}
+
+// VideoGetComments returns a list of comments on a video.
+//
+// extended=0
+//
+// https://vk.com/dev/video.getComments
+func (vk *VK) VideoGetComments(params Params) (response VideoGetCommentsResponse, err error) {
+ err = vk.RequestUnmarshal("video.getComments", &response, params, Params{"extended": false})
+
+ return
+}
+
+// VideoGetCommentsExtendedResponse struct.
+type VideoGetCommentsExtendedResponse struct {
+ Count int `json:"count"`
+ Items []object.WallWallComment `json:"items"`
+ object.ExtendedResponse
+}
+
+// VideoGetCommentsExtended returns a list of comments on a video.
+//
+// extended=1
+//
+// https://vk.com/dev/video.getComments
+func (vk *VK) VideoGetCommentsExtended(params Params) (response VideoGetCommentsExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("video.getComments", &response, params, Params{"extended": true})
+
+ return
+}
+
+// VideoRemoveFromAlbum allows you to remove the video from the album.
+//
+// https://vk.com/dev/video.removeFromAlbum
+func (vk *VK) VideoRemoveFromAlbum(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("video.removeFromAlbum", &response, params)
+ return
+}
+
+// VideoReorderAlbums reorders the album in the list of user video albums.
+//
+// https://vk.com/dev/video.reorderAlbums
+func (vk *VK) VideoReorderAlbums(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("video.reorderAlbums", &response, params)
+ return
+}
+
+// VideoReorderVideos reorders the video in the video album.
+//
+// https://vk.com/dev/video.reorderVideos
+func (vk *VK) VideoReorderVideos(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("video.reorderVideos", &response, params)
+ return
+}
+
+// VideoReport reports (submits a complaint about) a video.
+//
+// https://vk.com/dev/video.report
+func (vk *VK) VideoReport(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("video.report", &response, params)
+ return
+}
+
+// VideoReportComment reports (submits a complaint about) a comment on a video.
+//
+// https://vk.com/dev/video.reportComment
+func (vk *VK) VideoReportComment(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("video.reportComment", &response, params)
+ return
+}
+
+// VideoRestore restores a previously deleted video.
+//
+// https://vk.com/dev/video.restore
+func (vk *VK) VideoRestore(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("video.restore", &response, params)
+ return
+}
+
+// VideoRestoreComment restores a previously deleted comment on a video.
+//
+// https://vk.com/dev/video.restoreComment
+func (vk *VK) VideoRestoreComment(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("video.restoreComment", &response, params)
+ return
+}
+
+// VideoSaveResponse struct.
+type VideoSaveResponse object.VideoSaveResult
+
+// VideoSave returns a server address (required for upload) and video data.
+//
+// https://vk.com/dev/video.save
+func (vk *VK) VideoSave(params Params) (response VideoSaveResponse, err error) {
+ err = vk.RequestUnmarshal("video.save", &response, params)
+ return
+}
+
+// VideoSearchResponse struct.
+type VideoSearchResponse struct {
+ Count int `json:"count"`
+ Items []object.VideoVideo `json:"items"`
+}
+
+// VideoSearch returns a list of videos under the set search criterion.
+//
+// extended=0
+//
+// https://vk.com/dev/video.search
+func (vk *VK) VideoSearch(params Params) (response VideoSearchResponse, err error) {
+ err = vk.RequestUnmarshal("video.search", &response, params, Params{"extended": false})
+
+ return
+}
+
+// VideoSearchExtendedResponse struct.
+type VideoSearchExtendedResponse struct {
+ Count int `json:"count"`
+ Items []object.VideoVideo `json:"items"`
+ object.ExtendedResponse
+}
+
+// VideoSearchExtended returns a list of videos under the set search criterion.
+//
+// extended=1
+//
+// https://vk.com/dev/video.search
+func (vk *VK) VideoSearchExtended(params Params) (response VideoSearchExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("video.search", &response, params, Params{"extended": true})
+
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/wall.go b/vendor/github.com/SevereCloud/vksdk/v2/api/wall.go
new file mode 100644
index 00000000..e951a749
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/wall.go
@@ -0,0 +1,383 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// WallCheckCopyrightLink method.
+//
+// https://vk.com/dev/wall.checkCopyrightLink
+func (vk *VK) WallCheckCopyrightLink(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("wall.checkCopyrightLink", &response, params)
+ return
+}
+
+// WallCloseComments turn off post commenting.
+//
+// https://vk.com/dev/wall.closeComments
+func (vk *VK) WallCloseComments(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("wall.closeComments", &response, params)
+ return
+}
+
+// WallCreateCommentResponse struct.
+type WallCreateCommentResponse struct {
+ CommentID int `json:"comment_id"`
+ ParentsStack []int `json:"parents_stack"`
+}
+
+// WallCreateComment adds a comment to a post on a user wall or community wall.
+//
+// https://vk.com/dev/wall.createComment
+func (vk *VK) WallCreateComment(params Params) (response WallCreateCommentResponse, err error) {
+ err = vk.RequestUnmarshal("wall.createComment", &response, params)
+ return
+}
+
+// WallDelete deletes a post from a user wall or community wall.
+//
+// https://vk.com/dev/wall.delete
+func (vk *VK) WallDelete(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("wall.delete", &response, params)
+ return
+}
+
+// WallDeleteComment deletes a comment on a post on a user wall or community wall.
+//
+// https://vk.com/dev/wall.deleteComment
+func (vk *VK) WallDeleteComment(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("wall.deleteComment", &response, params)
+ return
+}
+
+// WallEditResponse struct.
+type WallEditResponse struct {
+ PostID int `json:"post_id"`
+}
+
+// WallEdit edits a post on a user wall or community wall.
+//
+// https://vk.com/dev/wall.edit
+func (vk *VK) WallEdit(params Params) (response WallEditResponse, err error) {
+ err = vk.RequestUnmarshal("wall.edit", &response, params)
+ return
+}
+
+// WallEditAdsStealth allows to edit hidden post.
+//
+// https://vk.com/dev/wall.editAdsStealth
+func (vk *VK) WallEditAdsStealth(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("wall.editAdsStealth", &response, params)
+ return
+}
+
+// WallEditComment edits a comment on a user wall or community wall.
+//
+// https://vk.com/dev/wall.editComment
+func (vk *VK) WallEditComment(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("wall.editComment", &response, params)
+ return
+}
+
+// WallGetResponse struct.
+type WallGetResponse struct {
+ Count int `json:"count"`
+ Items []object.WallWallpost `json:"items"`
+}
+
+// WallGet returns a list of posts on a user wall or community wall.
+//
+// extended=0
+//
+// https://vk.com/dev/wall.get
+func (vk *VK) WallGet(params Params) (response WallGetResponse, err error) {
+ err = vk.RequestUnmarshal("wall.get", &response, params, Params{"extended": false})
+
+ return
+}
+
+// WallGetExtendedResponse struct.
+type WallGetExtendedResponse struct {
+ Count int `json:"count"`
+ Items []object.WallWallpost `json:"items"`
+ object.ExtendedResponse
+}
+
+// WallGetExtended returns a list of posts on a user wall or community wall.
+//
+// extended=1
+//
+// https://vk.com/dev/wall.get
+func (vk *VK) WallGetExtended(params Params) (response WallGetExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("wall.get", &response, params, Params{"extended": true})
+
+ return
+}
+
+// WallGetByIDResponse struct.
+type WallGetByIDResponse []object.WallWallpost
+
+// WallGetByID returns a list of posts from user or community walls by their IDs.
+//
+// extended=0
+//
+// https://vk.com/dev/wall.getById
+func (vk *VK) WallGetByID(params Params) (response WallGetByIDResponse, err error) {
+ err = vk.RequestUnmarshal("wall.getById", &response, params, Params{"extended": false})
+
+ return
+}
+
+// WallGetByIDExtendedResponse struct.
+type WallGetByIDExtendedResponse struct {
+ Items []object.WallWallpost `json:"items"`
+ object.ExtendedResponse
+}
+
+// WallGetByIDExtended returns a list of posts from user or community walls by their IDs.
+//
+// extended=1
+//
+// https://vk.com/dev/wall.getById
+func (vk *VK) WallGetByIDExtended(params Params) (response WallGetByIDExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("wall.getById", &response, params, Params{"extended": true})
+
+ return
+}
+
+// WallGetCommentResponse struct.
+type WallGetCommentResponse struct {
+ Items []object.WallWallComment `json:"items"`
+ CanPost object.BaseBoolInt `json:"can_post"`
+ ShowReplyButton object.BaseBoolInt `json:"show_reply_button"`
+ GroupsCanPost object.BaseBoolInt `json:"groups_can_post"`
+ CurrentLevelCount int `json:"current_level_count"`
+}
+
+// WallGetComment allows to obtain wall comment info.
+//
+// extended=0
+//
+// https://vk.com/dev/wall.getComment
+func (vk *VK) WallGetComment(params Params) (response WallGetCommentResponse, err error) {
+ err = vk.RequestUnmarshal("wall.getComment", &response, params, Params{"extended": false})
+
+ return
+}
+
+// WallGetCommentExtendedResponse struct.
+type WallGetCommentExtendedResponse struct {
+ Count int `json:"count"`
+ Items []object.WallWallComment `json:"items"`
+ CanPost object.BaseBoolInt `json:"can_post"`
+ ShowReplyButton object.BaseBoolInt `json:"show_reply_button"`
+ GroupsCanPost object.BaseBoolInt `json:"groups_can_post"`
+ CurrentLevelCount int `json:"current_level_count"`
+ Profiles []object.UsersUser `json:"profiles"`
+ Groups []object.GroupsGroup `json:"groups"`
+}
+
+// WallGetCommentExtended allows to obtain wall comment info.
+//
+// extended=1
+//
+// https://vk.com/dev/wall.getComment
+func (vk *VK) WallGetCommentExtended(params Params) (response WallGetCommentExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("wall.getComment", &response, params, Params{"extended": true})
+
+ return
+}
+
+// WallGetCommentsResponse struct.
+type WallGetCommentsResponse struct {
+ CanPost object.BaseBoolInt `json:"can_post"`
+ ShowReplyButton object.BaseBoolInt `json:"show_reply_button"`
+ GroupsCanPost object.BaseBoolInt `json:"groups_can_post"`
+ CurrentLevelCount int `json:"current_level_count"`
+ Count int `json:"count"`
+ Items []object.WallWallComment `json:"items"`
+}
+
+// WallGetComments returns a list of comments on a post on a user wall or community wall.
+//
+// extended=0
+//
+// https://vk.com/dev/wall.getComments
+func (vk *VK) WallGetComments(params Params) (response WallGetCommentsResponse, err error) {
+ err = vk.RequestUnmarshal("wall.getComments", &response, params, Params{"extended": false})
+
+ return
+}
+
+// WallGetCommentsExtendedResponse struct.
+type WallGetCommentsExtendedResponse struct {
+ CanPost object.BaseBoolInt `json:"can_post"`
+ ShowReplyButton object.BaseBoolInt `json:"show_reply_button"`
+ GroupsCanPost object.BaseBoolInt `json:"groups_can_post"`
+ CurrentLevelCount int `json:"current_level_count"`
+ Count int `json:"count"`
+ Items []object.WallWallComment `json:"items"`
+ object.ExtendedResponse
+}
+
+// WallGetCommentsExtended returns a list of comments on a post on a user wall or community wall.
+//
+// extended=1
+//
+// https://vk.com/dev/wall.getComments
+func (vk *VK) WallGetCommentsExtended(params Params) (response WallGetCommentsExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("wall.getComments", &response, params, Params{"extended": true})
+
+ return
+}
+
+// WallGetRepostsResponse struct.
+type WallGetRepostsResponse struct {
+ Items []object.WallWallpost `json:"items"`
+ object.ExtendedResponse
+}
+
+// WallGetReposts returns information about reposts of a post on user wall or community wall.
+//
+// https://vk.com/dev/wall.getReposts
+func (vk *VK) WallGetReposts(params Params) (response WallGetRepostsResponse, err error) {
+ err = vk.RequestUnmarshal("wall.getReposts", &response, params)
+ return
+}
+
+// WallOpenComments includes posting comments.
+//
+// https://vk.com/dev/wall.openComments
+func (vk *VK) WallOpenComments(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("wall.openComments", &response, params)
+ return
+}
+
+// WallPin pins the post on wall.
+//
+// https://vk.com/dev/wall.pin
+func (vk *VK) WallPin(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("wall.pin", &response, params)
+ return
+}
+
+// WallPostResponse struct.
+type WallPostResponse struct {
+ PostID int `json:"post_id"`
+}
+
+// WallPost adds a new post on a user wall or community wall.Can also be used to publish suggested or scheduled posts.
+//
+// https://vk.com/dev/wall.post
+func (vk *VK) WallPost(params Params) (response WallPostResponse, err error) {
+ err = vk.RequestUnmarshal("wall.post", &response, params)
+ return
+}
+
+// WallPostAdsStealthResponse struct.
+type WallPostAdsStealthResponse struct {
+ PostID int `json:"post_id"`
+}
+
+// WallPostAdsStealth allows to create hidden post which will
+// not be shown on the community's wall and can be used for creating
+// an ad with type "Community post".
+//
+// https://vk.com/dev/wall.postAdsStealth
+func (vk *VK) WallPostAdsStealth(params Params) (response WallPostAdsStealthResponse, err error) {
+ err = vk.RequestUnmarshal("wall.postAdsStealth", &response, params)
+ return
+}
+
+// WallReportComment reports (submits a complaint about) a comment on a post on a user wall or community wall.
+//
+// https://vk.com/dev/wall.reportComment
+func (vk *VK) WallReportComment(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("wall.reportComment", &response, params)
+ return
+}
+
+// WallReportPost reports (submits a complaint about) a post on a user wall or community wall.
+//
+// https://vk.com/dev/wall.reportPost
+func (vk *VK) WallReportPost(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("wall.reportPost", &response, params)
+ return
+}
+
+// WallRepostResponse struct.
+type WallRepostResponse struct {
+ Success int `json:"success"`
+ PostID int `json:"post_id"`
+ RepostsCount int `json:"reposts_count"`
+ LikesCount int `json:"likes_count"`
+ WallRepostCount int `json:"wall_repost_count"`
+ MailRepostCount int `json:"mail_repost_count"`
+}
+
+// WallRepost reposts ( copies) an object to a user wall or community wall.
+//
+// https://vk.com/dev/wall.repost
+func (vk *VK) WallRepost(params Params) (response WallRepostResponse, err error) {
+ err = vk.RequestUnmarshal("wall.repost", &response, params)
+ return
+}
+
+// WallRestore restores a post deleted from a user wall or community wall.
+//
+// https://vk.com/dev/wall.restore
+func (vk *VK) WallRestore(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("wall.restore", &response, params)
+ return
+}
+
+// WallRestoreComment restores a comment deleted from a user wall or community wall.
+//
+// https://vk.com/dev/wall.restoreComment
+func (vk *VK) WallRestoreComment(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("wall.restoreComment", &response, params)
+ return
+}
+
+// WallSearchResponse struct.
+type WallSearchResponse struct {
+ Count int `json:"count"`
+ Items []object.WallWallpost `json:"items"`
+}
+
+// WallSearch allows to search posts on user or community walls.
+//
+// extended=0
+//
+// https://vk.com/dev/wall.search
+func (vk *VK) WallSearch(params Params) (response WallSearchResponse, err error) {
+ err = vk.RequestUnmarshal("wall.search", &response, params, Params{"extended": false})
+
+ return
+}
+
+// WallSearchExtendedResponse struct.
+type WallSearchExtendedResponse struct {
+ Count int `json:"count"`
+ Items []object.WallWallpost `json:"items"`
+ object.ExtendedResponse
+}
+
+// WallSearchExtended allows to search posts on user or community walls.
+//
+// extended=1
+//
+// https://vk.com/dev/wall.search
+func (vk *VK) WallSearchExtended(params Params) (response WallSearchExtendedResponse, err error) {
+ err = vk.RequestUnmarshal("wall.search", &response, params, Params{"extended": true})
+
+ return
+}
+
+// WallUnpin unpins the post on wall.
+//
+// https://vk.com/dev/wall.unpin
+func (vk *VK) WallUnpin(params Params) (response int, err error) {
+ err = vk.RequestUnmarshal("wall.unpin", &response, params)
+ return
+}
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/api/widgets.go b/vendor/github.com/SevereCloud/vksdk/v2/api/widgets.go
new file mode 100644
index 00000000..a5f83f0c
--- /dev/null
+++ b/vendor/github.com/SevereCloud/vksdk/v2/api/widgets.go
@@ -0,0 +1,33 @@
+package api // import "github.com/SevereCloud/vksdk/v2/api"
+
+import (
+ "github.com/SevereCloud/vksdk/v2/object"
+)
+
+// WidgetsGetCommentsResponse struct.
+type WidgetsGetCommentsResponse struct {
+ Count int `json:"count"`
+ Posts []object.WidgetsWidgetComment `json:"posts"`
+}
+
+// WidgetsGetComments gets a list of comments for the page added through the Comments widget.
+//
+// https://vk.com/dev/widgets.getComments
+func (vk *VK) WidgetsGetComments(params Params) (response WidgetsGetCommentsResponse, err error) {
+ err = vk.RequestUnmarshal("widgets.getComments", &response, params)
+ return
+}
+
+// WidgetsGetPagesResponse struct.
+type WidgetsGetPagesResponse struct {
+ Count int `json:"count"`
+ Pages []object.WidgetsWidgetPage `json:"pages"`
+}
+
+// WidgetsGetPages gets a list of application/site pages where the Comments widget or Like widget is installed.
+//
+// https://vk.com/dev/widgets.getPages
+func (vk *VK) WidgetsGetPages(params Params) (response WidgetsGetPagesResponse, err error) {
+ err = vk.RequestUnmarshal("widgets.getPages", &response, params)
+ return
+}