diff options
Diffstat (limited to 'vendor/github.com/SevereCloud/vksdk/v2/api')
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}§ion=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 +} |