Golang API ВКонтакте
go get git@github.com:stels-cs/vk-api-tools.git
github.com/gorilla/websocket потребуется для работы с WebSocket в StreamingAPI, но устанавливать его не обязательно
go get github.com/gorilla/websocket
Пример:
package main
import (
"github.com/stels-cs/vk-api-tools"
"strconv"
)
type User struct {
Id int `json:"id"`
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
}
func main() {
users := make([]User, 0)
err := VkApi.Exec("users.get", VkApi.P{"user_ids": "2050,andrew"}, &users)
if err != nil {
panic(err)
}
for _, u := range users {
println(u.FirstName + " " + u.LastName + " #" + strconv.Itoa(u.Id))
}
}
Результат:
Катя Лебедева
Андрей Рогозов
Пример без структур:
package main
import (
"github.com/stels-cs/vk-api-tools"
)
func main() {
res, err := VkApi.Call("users.get", VkApi.P{"user_ids": "2050,avk", "fields": "city"})
if err != nil {
panic(err)
}
print(res.QStringDef("0.first_name", "") + " – ")
println(res.QStringDef("0.city.title", ""))
print(res.QStringDef("1.first_name", "") + " – ")
println(res.QStringDef("1.city.title", ""))
}
Результат:
Катя – Санкт-Петербург
Александр – Москва
Подробнее про VkApi.Response
и про QStringDef
Важно! По умолчанию VkApi.Exec и VkApi.Call будут повторят запрос до 30 раз в случае любых сетевых ошибок или если API вернет кодо ошибки: 1, 9, 6, 9, 10, 603 vk.com/dev/errors.
Чтобы отключить это посмотрите пример ниже.
Пример создания объекта api
package main
import (
"github.com/stels-cs/vk-api-tools"
"strconv"
)
func main() {
token := "3bac432bdcb1234b1...."
v := "5.71"
retryTimesIfFailed := 0
api := VkApi.CreateApi(token, v, VkApi.GetHttpTransport(), retryTimesIfFailed)
users := make([]struct{
Id int `json:"id"`
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
}, 0)
err := api.Exec("users.get", VkApi.P{"user_ids": "2050,andrew"}, &users)
if err != nil {
panic(err)
}
for _, u := range users {
println(u.FirstName + " " + u.LastName + " #" + strconv.Itoa(u.Id))
}
}
Результат:
Катя Лебедева
Андрей Рогозов
Обработка ошибок
Метод VkApi.Call и VkApi.Exec могут вернуть три типа ошибок
- VkApi.TransportError - Произошла ошибка сети, или сервер ВКонтакте временно недоступен
- VkApi.ApiError - API ВКонтакте вернуло ошибку
все остальные типы
- ошибки парсинга json, только для VkApi.Exec
Тесты
StreamingApi_test.go.txt - такой чтобы у вас не регалось на отсутсвие модуля