5
0
mirror of https://github.com/cwinfo/matterbridge.git synced 2024-11-25 14:31:36 +00:00
matterbridge/vendor/github.com/SevereCloud/vksdk/v2/object/utils.go

154 lines
4.0 KiB
Go
Raw Normal View History

package object // import "github.com/SevereCloud/vksdk/v2/object"
import (
"bytes"
"encoding/json"
"github.com/vmihailenco/msgpack/v5"
"github.com/vmihailenco/msgpack/v5/msgpcode"
)
// UtilsDomainResolvedType object type.
const (
UtilsDomainResolvedTypeUser = "user"
UtilsDomainResolvedTypeGroup = "group"
UtilsDomainResolvedTypeApplication = "application"
UtilsDomainResolvedTypePage = "page"
UtilsDomainResolvedTypeVkApp = "vk_app"
)
// UtilsDomainResolved struct.
type UtilsDomainResolved struct {
ObjectID int `json:"object_id"` // Object ID
Type string `json:"type"`
}
// UnmarshalJSON UtilsDomainResolved.
//
// BUG(VK): UtilsDomainResolved return [].
func (link *UtilsDomainResolved) UnmarshalJSON(data []byte) error {
if bytes.Equal(data, []byte("[]")) {
return nil
}
type renamedUtilsDomainResolved UtilsDomainResolved
var r renamedUtilsDomainResolved
err := json.Unmarshal(data, &r)
if err != nil {
return err
}
*link = UtilsDomainResolved(r)
return nil
}
// DecodeMsgpack UtilsDomainResolved.
//
// BUG(VK): UtilsDomainResolved return [].
func (link *UtilsDomainResolved) DecodeMsgpack(dec *msgpack.Decoder) error {
data, err := dec.DecodeRaw()
if err != nil {
return err
}
if bytes.Equal(data, []byte{msgpcode.FixedArrayLow}) {
return nil
}
type renamedUtilsDomainResolved UtilsDomainResolved
var r renamedUtilsDomainResolved
d := msgpack.NewDecoder(bytes.NewReader(data))
d.SetCustomStructTag("json")
err = d.Decode(&r)
if err != nil {
return err
}
*link = UtilsDomainResolved(r)
return nil
}
// UtilsLastShortenedLink struct.
type UtilsLastShortenedLink struct {
AccessKey string `json:"access_key"` // Access key for private stats
Key string `json:"key"` // Link key (characters after vk.cc/)
ShortURL string `json:"short_url"` // Short link URL
Timestamp int `json:"timestamp"` // Creation time in Unixtime
URL string `json:"url"` // Full URL
Views int `json:"views"` // Total views number
}
// Link status.
const (
UtilsLinkCheckedStatusNotBanned = "not_banned"
UtilsLinkCheckedStatusBanned = "banned"
UtilsLinkCheckedStatusProcessing = "processing"
)
// UtilsLinkChecked struct.
type UtilsLinkChecked struct {
Link string `json:"link"` // Link URL
Status string `json:"status"`
}
// UtilsLinkStats struct.
type UtilsLinkStats struct {
Key string `json:"key"` // Link key (characters after vk.cc/)
Stats []UtilsStats `json:"stats"`
}
// UtilsLinkStatsExtended struct.
type UtilsLinkStatsExtended struct {
Key string `json:"key"` // Link key (characters after vk.cc/)
Stats []UtilsStatsExtended `json:"stats"`
}
// UtilsShortLink struct.
type UtilsShortLink struct {
AccessKey string `json:"access_key"` // Access key for private stats
Key string `json:"key"` // Link key (characters after vk.cc/)
ShortURL string `json:"short_url"` // Short link URL
URL string `json:"url"` // Full URL
}
// UtilsStats struct.
type UtilsStats struct {
Timestamp int `json:"timestamp"` // Start time
Views int `json:"views"` // Total views number
}
// UtilsStatsCity struct.
type UtilsStatsCity struct {
CityID int `json:"city_id"` // City ID
Views int `json:"views"` // Views number
}
// UtilsStatsCountry struct.
type UtilsStatsCountry struct {
CountryID int `json:"country_id"` // Country ID
Views int `json:"views"` // Views number
}
// UtilsStatsExtended struct.
type UtilsStatsExtended struct {
Cities []UtilsStatsCity `json:"cities"`
Countries []UtilsStatsCountry `json:"countries"`
SexAge []UtilsStatsSexAge `json:"sex_age"`
Timestamp int `json:"timestamp"` // Start time
Views int `json:"views"` // Total views number
}
// UtilsStatsSexAge struct.
type UtilsStatsSexAge struct {
AgeRange string `json:"age_range"` // Age denotation
Female int `json:"female"` // Views by female users
Male int `json:"male"` // Views by male users
}