diff options
Diffstat (limited to 'vendor/github.com/SevereCloud/vksdk/v2/object/utils.go')
-rw-r--r-- | vendor/github.com/SevereCloud/vksdk/v2/object/utils.go | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/utils.go b/vendor/github.com/SevereCloud/vksdk/v2/object/utils.go index 3bbd775d..408cf7f9 100644 --- a/vendor/github.com/SevereCloud/vksdk/v2/object/utils.go +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/utils.go @@ -1,5 +1,13 @@ 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" @@ -15,6 +23,58 @@ type UtilsDomainResolved struct { 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 |