summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/SevereCloud/vksdk/v2/object/object.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/SevereCloud/vksdk/v2/object/object.go')
-rw-r--r--vendor/github.com/SevereCloud/vksdk/v2/object/object.go71
1 files changed, 70 insertions, 1 deletions
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/object.go b/vendor/github.com/SevereCloud/vksdk/v2/object/object.go
index e6c89efd..e03e7f3b 100644
--- a/vendor/github.com/SevereCloud/vksdk/v2/object/object.go
+++ b/vendor/github.com/SevereCloud/vksdk/v2/object/object.go
@@ -9,6 +9,8 @@ import (
"bytes"
"encoding/json"
"reflect"
+
+ "github.com/vmihailenco/msgpack/v5"
)
// Attachment interface.
@@ -42,6 +44,44 @@ func (b *BaseBoolInt) UnmarshalJSON(data []byte) (err error) {
return
}
+// DecodeMsgpack func.
+func (b *BaseBoolInt) DecodeMsgpack(dec *msgpack.Decoder) (err error) {
+ data, err := dec.DecodeRaw()
+ if err != nil {
+ return err
+ }
+
+ var (
+ valueInt int
+ valueBool bool
+ )
+
+ switch {
+ case msgpack.Unmarshal(data, &valueBool) == nil:
+ *b = BaseBoolInt(valueBool)
+ case msgpack.Unmarshal(data, &valueInt) == nil:
+ if valueInt == 1 {
+ *b = true
+ break
+ }
+
+ if valueInt == 0 {
+ *b = false
+ break
+ }
+
+ fallthrough
+ default:
+ // return msgpack error
+ err = &json.UnmarshalTypeError{
+ Value: string(data),
+ Type: reflect.TypeOf((*BaseBoolInt)(nil)),
+ }
+ }
+
+ return err
+}
+
// BaseCountry struct.
type BaseCountry struct {
ID int `json:"id"`
@@ -151,6 +191,33 @@ func (obj *BaseImage) UnmarshalJSON(data []byte) (err error) {
return err
}
+// DecodeMsgpack is required to support images with `src` field.
+func (obj *BaseImage) DecodeMsgpack(dec *msgpack.Decoder) (err error) {
+ type renamedBaseImage struct {
+ Height float64 `msgpack:"height"`
+ URL string `msgpack:"url"`
+ Src string `msgpack:"src"`
+ Width float64 `msgpack:"width"`
+ Type string `msgpack:"type"`
+ }
+
+ var renamedObj renamedBaseImage
+
+ err = dec.Decode(&renamedObj)
+
+ obj.Height = renamedObj.Height
+ obj.Width = renamedObj.Width
+ obj.Type = renamedObj.Type
+
+ if renamedObj.Src == "" {
+ obj.URL = renamedObj.URL
+ } else {
+ obj.URL = renamedObj.Src
+ }
+
+ return err
+}
+
// BaseLikes struct.
type BaseLikes struct {
UserLikes BaseBoolInt `json:"user_likes"` // Information whether current user likes
@@ -346,9 +413,11 @@ const (
type Privacy struct {
Category PrivacyCategory `json:"category,omitempty"`
Lists struct {
- Allowed []int `json:"allowed"`
+ Allowed []int `json:"allowed"`
+ Excluded []int `json:"excluded"`
} `json:"lists,omitempty"`
Owners struct {
+ Allowed []int `json:"allowed"`
Excluded []int `json:"excluded"`
} `json:"owners,omitempty"`
}