diff options
Diffstat (limited to 'vendor/github.com/SevereCloud/vksdk/v2/object/object.go')
-rw-r--r-- | vendor/github.com/SevereCloud/vksdk/v2/object/object.go | 566 |
1 files changed, 566 insertions, 0 deletions
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/object.go b/vendor/github.com/SevereCloud/vksdk/v2/object/object.go new file mode 100644 index 00000000..4daf7c07 --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/object.go @@ -0,0 +1,566 @@ +/* +Package object contains objects for VK. + +See more https://vk.com/dev/objects +*/ +package object // import "github.com/SevereCloud/vksdk/v2/object" + +import ( + "bytes" + "encoding/json" + "reflect" +) + +// Attachment interface. +type Attachment interface { + ToAttachment() string +} + +// JSONObject interface. +type JSONObject interface { + ToJSON() string +} + +// BaseBoolInt type. +type BaseBoolInt bool + +// UnmarshalJSON func. +func (b *BaseBoolInt) UnmarshalJSON(data []byte) (err error) { + switch { + case bytes.Equal(data, []byte("1")), bytes.Equal(data, []byte("true")): + *b = true + case bytes.Equal(data, []byte("0")), bytes.Equal(data, []byte("false")): + *b = false + default: + // return json error + err = &json.UnmarshalTypeError{ + Value: string(data), + Type: reflect.TypeOf((*BaseBoolInt)(nil)), + } + } + + return +} + +// BaseCountry struct. +type BaseCountry struct { + ID int `json:"id"` + Title string `json:"title"` +} + +// BaseObject struct. +type BaseObject struct { + ID int `json:"id"` + Title string `json:"title"` +} + +// BaseObjectCount struct. +type BaseObjectCount struct { + Count int `json:"count"` +} + +// BaseObjectWithName struct. +type BaseObjectWithName struct { + ID int `json:"id"` + Name string `json:"name"` +} + +// BaseRequestParam struct. +type BaseRequestParam struct { + Key string `json:"key"` + Value string `json:"value"` +} + +// BaseSex const. +const ( + SexUnknown = iota + SexFemale + SexMale +) + +// LongPollResponse struct. +type LongPollResponse struct { + Ts int `json:"ts"` + Updates [][]interface{} `json:"updates"` + Failed int `json:"failed"` +} + +// BaseCommentsInfo struct. +type BaseCommentsInfo struct { + Count int `json:"count"` + CanPost BaseBoolInt `json:"can_post"` + GroupsCanPost BaseBoolInt `json:"groups_can_post"` + CanClose BaseBoolInt `json:"can_close"` + CanOpen BaseBoolInt `json:"can_open"` +} + +// BaseGeo struct. +type BaseGeo struct { + Coordinates string `json:"coordinates"` + Place BasePlace `json:"place"` + Showmap int `json:"showmap"` + Type string `json:"type"` +} + +// BaseMessageGeo struct. +type BaseMessageGeo struct { + Coordinates BaseGeoCoordinates `json:"coordinates"` + Place BasePlace `json:"place"` + Showmap int `json:"showmap"` + Type string `json:"type"` +} + +// BaseGeoCoordinates struct. +type BaseGeoCoordinates struct { + Latitude float64 `json:"latitude"` + Longitude float64 `json:"longitude"` +} + +// BaseImage struct. +type BaseImage struct { + Height float64 `json:"height"` + URL string `json:"url"` + Width float64 `json:"width"` + Type string `json:"type"` +} + +// UnmarshalJSON is required to support images with `src` field. +func (obj *BaseImage) UnmarshalJSON(data []byte) (err error) { + type renamedBaseImage struct { + Height float64 `json:"height"` + URL string `json:"url"` + Src string `json:"src"` + Width float64 `json:"width"` + Type string `json:"type"` + } + + var renamedObj renamedBaseImage + + err = json.Unmarshal(data, &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 + Count int `json:"count"` // Likes number +} + +// BaseLikesInfo struct. +type BaseLikesInfo struct { + CanLike BaseBoolInt `json:"can_like"` // Information whether current user can like the post + CanPublish BaseBoolInt `json:"can_publish"` // Information whether current user can repost + UserLikes BaseBoolInt `json:"user_likes"` // Information whether current uer has liked the post + Count int `json:"count"` // Likes number +} + +// BaseLink struct. +type BaseLink struct { + Application BaseLinkApplication `json:"application"` + Button BaseLinkButton `json:"button"` + ButtonText string `json:"button_text"` + ButtonAction string `json:"button_action"` + Caption string `json:"caption"` + Description string `json:"description"` + Photo PhotosPhoto `json:"photo"` + Video VideoVideo `json:"video"` + PreviewPage string `json:"preview_page"` + PreviewURL string `json:"preview_url"` + Product BaseLinkProduct `json:"product"` + Rating BaseLinkRating `json:"rating"` + Title string `json:"title"` + Target string `json:"target"` + URL string `json:"url"` + IsFavorite BaseBoolInt `json:"is_favorite"` +} + +// BaseLinkApplication struct. +type BaseLinkApplication struct { + AppID float64 `json:"app_id"` + Store BaseLinkApplicationStore `json:"store"` +} + +// BaseLinkApplicationStore struct. +type BaseLinkApplicationStore struct { + ID float64 `json:"id"` + Name string `json:"name"` +} + +// BaseLinkButton struct. +type BaseLinkButton struct { + Action BaseLinkButtonAction `json:"action"` + Title string `json:"title"` +} + +// BaseLinkButtonAction struct. +type BaseLinkButtonAction struct { + Type string `json:"type"` + URL string `json:"url"` +} + +// BaseLinkProduct struct. +type BaseLinkProduct struct { + Price MarketPrice `json:"price"` + Merchant string `json:"merchant"` + OrdersCount int `json:"orders_count"` +} + +// BaseLinkRating struct. +type BaseLinkRating struct { + ReviewsCount int `json:"reviews_count"` + Stars float64 `json:"stars"` +} + +// BasePlace struct. +type BasePlace struct { + Address string `json:"address"` + Checkins int `json:"checkins"` + City interface{} `json:"city"` // BUG(VK): https://github.com/VKCOM/vk-api-schema/issues/143 + Country interface{} `json:"country"` + Created int `json:"created"` + ID int `json:"id"` + Icon string `json:"icon"` + Latitude float64 `json:"latitude"` + Longitude float64 `json:"longitude"` + Title string `json:"title"` + Type string `json:"type"` + IsDeleted BaseBoolInt `json:"is_deleted"` + TotalCheckins int `json:"total_checkins"` + Updated int `json:"updated"` + CategoryObject BaseCategoryObject `json:"category_object"` +} + +// BaseCategoryObject struct. +type BaseCategoryObject struct { + ID int `json:"id"` + Title string `json:"title"` + Icons []BaseImage `json:"icons"` +} + +// BaseRepostsInfo struct. +type BaseRepostsInfo struct { + Count int `json:"count"` + WallCount int `json:"wall_count"` + MailCount int `json:"mail_count"` + UserReposted int `json:"user_reposted"` +} + +// BaseSticker struct. +type BaseSticker struct { + Images []BaseImage `json:"images"` + ImagesWithBackground []BaseImage `json:"images_with_background"` + ProductID int `json:"product_id"` + StickerID int `json:"sticker_id"` + AnimationURL string `json:"animation_url"` +} + +// MaxSize return the largest BaseSticker. +func (sticker BaseSticker) MaxSize() (maxImageSize BaseImage) { + var max float64 + + for _, imageSize := range sticker.Images { + size := imageSize.Height * imageSize.Width + if size > max { + max = size + maxImageSize = imageSize + } + } + + return +} + +// MinSize return the smallest BaseSticker. +func (sticker BaseSticker) MinSize() (minImageSize BaseImage) { + var min float64 + + for _, imageSize := range sticker.Images { + size := imageSize.Height * imageSize.Width + if size < min || min == 0 { + min = size + minImageSize = imageSize + } + } + + return +} + +// MaxSizeBackground return the largest BaseSticker with background. +func (sticker BaseSticker) MaxSizeBackground() (maxImageSize BaseImage) { + var max float64 + + for _, imageSize := range sticker.ImagesWithBackground { + size := imageSize.Height * imageSize.Width + if size > max { + max = size + maxImageSize = imageSize + } + } + + return +} + +// MinSizeBackground return the smallest BaseSticker with background. +func (sticker BaseSticker) MinSizeBackground() (minImageSize BaseImage) { + var min float64 + + for _, imageSize := range sticker.ImagesWithBackground { + size := imageSize.Height * imageSize.Width + if size < min || min == 0 { + min = size + minImageSize = imageSize + } + } + + return +} + +// BaseUserID struct. +type BaseUserID struct { + UserID int `json:"user_id"` +} + +// PrivacyCategory type. +type PrivacyCategory string + +// Possible values. +const ( + PrivacyAll PrivacyCategory = "all" + PrivacyOnlyMe PrivacyCategory = "only_me" + PrivacyFriends PrivacyCategory = "friends" + PrivacyFriendsOfFriends PrivacyCategory = "friends_of_friends" +) + +// Privacy struct. +type Privacy struct { + Category PrivacyCategory `json:"category,omitempty"` + Lists struct { + Allowed []int `json:"allowed"` + } `json:"lists,omitempty"` + Owners struct { + Excluded []int `json:"excluded"` + } `json:"owners,omitempty"` +} + +// EventsEventAttach struct. +type EventsEventAttach struct { + Address string `json:"address,omitempty"` // address of event + ButtonText string `json:"button_text"` // text of attach + Friends []int `json:"friends"` // array of friends ids + ID int `json:"id"` // event ID + IsFavorite BaseBoolInt `json:"is_favorite"` // is favorite + MemberStatus int `json:"member_status,omitempty"` // Current user's member status + Text string `json:"text"` // text of attach + Time int `json:"time,omitempty"` // event start time +} + +// OauthError struct. +type OauthError struct { + Error string `json:"error"` + ErrorDescription string `json:"error_description"` + RedirectURI string `json:"redirect_uri"` +} + +// Article struct. +type Article struct { + ID int `json:"id"` + OwnerID int `json:"owner_id"` + OwnerName string `json:"owner_name"` + OwnerPhoto string `json:"owner_photo"` + State string `json:"state"` + CanReport BaseBoolInt `json:"can_report"` + IsFavorite BaseBoolInt `json:"is_favorite"` + NoFooter BaseBoolInt `json:"no_footer"` + Title string `json:"title"` + Subtitle string `json:"subtitle"` + Views int `json:"views"` + Shares int `json:"shares"` + URL string `json:"url"` + ViewURL string `json:"view_url"` + AccessKey string `json:"access_key"` + PublishedDate int `json:"published_date"` + Photo PhotosPhoto `json:"photo"` +} + +// ExtendedResponse struct. +type ExtendedResponse struct { + Profiles []UsersUser `json:"profiles,omitempty"` + Groups []GroupsGroup `json:"groups,omitempty"` +} + +// ClientInfo struct. +type ClientInfo struct { + ButtonActions []string `json:"button_actions"` + Keyboard BaseBoolInt `json:"keyboard"` + InlineKeyboard BaseBoolInt `json:"inline_keyboard"` + Carousel BaseBoolInt `json:"carousel"` + LangID int `json:"lang_id"` +} + +// Language code. +const ( + LangRU = 0 // Русский + LangUK = 1 // Українська + LangBE = 2 // Беларуская (тарашкевiца) + LangEN = 3 // English + LangES = 4 // Español + LangFI = 5 // Suomi + LangDE = 6 // Deutsch + LangIT = 7 // Italiano + LangBG = 8 // Български + LangHR = 9 // Hrvatski + LangHU = 10 // Magyar + LangSR = 11 // Српски + LangPT = 12 // Português + LangEL = 14 // Ελληνικά + LangPL = 15 // Polski + LangFR = 16 // Français + LangKO = 17 // 한국어 + LangZH = 18 // 汉语 + LangLT = 19 // Lietuvių + LangJA = 20 // 日本語 + LangCS = 21 // Čeština + LangET = 22 // Eesti + LangTT = 50 // Татарча + LangBA = 51 // Башҡортса + LangCV = 52 // Чăвашла + LangSK = 53 // Slovenčina + LangRO = 54 // Română + LangNO = 55 // Norsk + LangLV = 56 // Latviešu + LangAZ = 57 // Azərbaycan dili + LangHY = 58 // Հայերեն + LangSQ = 59 // Shqip + LangSV = 60 // Svenska + LangNL = 61 // Nederlands + LangTK = 62 // Türkmen + LangKA = 63 // ქართული + LangDA = 64 // Dansk + LangUZ = 65 // O‘zbek + LangMO = 66 // Moldovenească + LangBUA = 67 // Буряад + LangTH = 68 // ภาษาไทย + LangID = 69 // Bahasa Indonesia + LangTG = 70 // Тоҷикӣ + LangSL = 71 // Slovenščina + LangBS = 72 // Bosanski + LangPTBR = 73 // Português brasileiro + LangFA = 74 // فارسی + LangVI = 75 // Tiếng Việt + LangHI = 76 // हिन्दी + LangSI = 77 // සිංහල + LangBN = 78 // বাংলা + LangTL = 79 // Tagalog + LangMN = 80 // Монгол + LangMY = 81 // ဗမာစာ + LangTR = 82 // Türkçe + LangNE = 83 // नेपाली + LangUR = 85 // اردو + LangKY = 87 // Кыргыз тили + LangPA = 90 // پنجابی + LangOS = 91 // Ирон + LangKN = 94 // ಕನ್ನಡ + LangSW = 95 // Kiswahili + LangKK = 97 // Қазақша + LangAR = 98 // العربية + LangHE = 99 // עברית + LangPreRevolutionary = 100 // Дореволюцiонный + LangMYV = 101 // Эрзянь кель + LangKDB = 102 // Адыгэбзэ + LangSAH = 105 // Саха тыла + LangADY = 106 // Адыгабзэ + LangUDM = 107 // Удмурт + LangCHM = 108 // Марий йылме + LangBE2 = 114 // Беларуская + LangLEZ = 118 // Лезги чІал + LangTW = 119 // 臺灣話 + LangKUM = 236 // Къумукъ тил + LangMVL = 270 // Mirandés + LangSLA = 298 // Русинськый + LangKRL = 379 // Karjalan kieli + LangTYV = 344 // Тыва дыл + LangXAL = 357 // Хальмг келн + LangTLY = 373 // Tolışə zıvon + LangKV = 375 // Коми кыв + LangUKClassic = 452 // Українська (клясична) + LangUKGalitska = 454 // Українська (Галицка) + LangKAB = 457 // Taqbaylit + LangEO = 555 // Esperanto + LangLA = 666 // Lingua Latina + LangSoviet = 777 // Советский +) + +// Button action type. +const ( + // A button that sends a message with text specified in the label. + ButtonText = "text" + + // Opens the VK Pay window with predefined parameters. The button is called + // “Pay with VK Pay” (VK Pay is displayed as a logo). This button always + // stretches to the whole keyboard width. + ButtonVKPay = "vkpay" + + // Opens a specified VK Apps app. This button always stretches to the whole + // keyboard width. + ButtonVKApp = "open_app" + + // Sends the location to the chat. This button always stretches to the + // whole keyboard width. + ButtonLocation = "location" + + // Opens the specified link. + ButtonOpenLink = "open_link" + + // Allows, without sending a message from the user, to receive a + // notification about pressing the button and perform the necessary action. + ButtonCallback = "callback" +) + +// Button color. This parameter is used only for buttons with the text and callback types. +const ( + Primary = "primary" // Blue button, indicates the main action. #5181B8 + ButtonBlue + + Secondary = "secondary" // Default white button. #FFFFFF + ButtonWhite + + Negative = "negative" // Dangerous or negative action (cancel, delete etc.) #E64646 + ButtonRed + + Positive = "positive" // Accept, agree. #4BB34B + ButtonGreen +) + +// Platform content creation platform. +type Platform int + +// Possible values. +const ( + _ Platform = iota + PlatformMobile // mobile web version + PlatformIPhone // iPhone + PlatformIPad // iPad + PlatformAndroid // Android + PlatformWindowsPhone // Windows Phone + PlatformWindows // Windows 8 + PlatformFull // full web version + PlatformOther // other apps +) + +// Conversations types. +const ( + PeerUser = "user" + PeerChat = "chat" + PeerGroup = "group" + PeerEmail = "email" +) |