diff options
author | Ivanik <ivan170102@gmail.com> | 2021-01-29 04:25:14 +0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-29 00:25:14 +0100 |
commit | 8764be74616bde87bbbf6c32901cd9f43264d1e0 (patch) | |
tree | 88902ba17d6a6d245cadb7e0b277bee7ef424f99 /vendor/github.com/SevereCloud/vksdk/v2/object | |
parent | 5dd15ef8e716c65accb6cd021095c0e19913d55f (diff) | |
download | matterbridge-msglm-8764be74616bde87bbbf6c32901cd9f43264d1e0.tar.gz matterbridge-msglm-8764be74616bde87bbbf6c32901cd9f43264d1e0.tar.bz2 matterbridge-msglm-8764be74616bde87bbbf6c32901cd9f43264d1e0.zip |
Add vk bridge (#1372)
* Add vk bridge
* Vk bridge attachments
* Vk bridge forwarded messages
* Vk bridge sample config and code cleanup
* Vk bridge add vendor
* Vk bridge message edit
* Vk bridge: fix fetching names of other bots
* Vk bridge: code cleanup
* Vk bridge: fix shadows declaration
* Vk bridge: remove UseFileURL
Diffstat (limited to 'vendor/github.com/SevereCloud/vksdk/v2/object')
36 files changed, 5822 insertions, 0 deletions
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/account.go b/vendor/github.com/SevereCloud/vksdk/v2/object/account.go new file mode 100644 index 00000000..cac22def --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/account.go @@ -0,0 +1,142 @@ +package object // import "github.com/SevereCloud/vksdk/v2/object" + +// AccountNameRequest struct. +type AccountNameRequest struct { + FirstName string `json:"first_name"` // First name in request + ID int `json:"id"` // Request ID needed to cancel the request + LastName string `json:"last_name"` // Last name in request + Status string `json:"status"` +} + +// AccountPushConversations struct. +type AccountPushConversations struct { + Count int `json:"count"` // Items count + Items []*AccountPushConversationsItem `json:"items"` +} + +// AccountPushConversationsItem struct. +type AccountPushConversationsItem struct { + DisabledUntil int `json:"disabled_until"` // Time until that notifications are disabled in seconds + PeerID int `json:"peer_id"` // Peer ID + Sound int `json:"sound"` // Information whether the sound are enabled +} + +// AccountPushParams struct. +type AccountPushParams struct { + AppRequest []string `json:"app_request"` + Birthday []string `json:"birthday"` + Chat []string `json:"chat"` + Comment []string `json:"comment"` + EventSoon []string `json:"event_soon"` + Friend []string `json:"friend"` + FriendAccepted []string `json:"friend_accepted"` + FriendFound []string `json:"friend_found"` + GroupAccepted []string `json:"group_accepted"` + GroupInvite []string `json:"group_invite"` + Like []string `json:"like"` + Mention []string `json:"mention"` + Msg []string `json:"msg"` + NewPost []string `json:"new_post"` + PhotosTag []string `json:"photos_tag"` + Reply []string `json:"reply"` + Repost []string `json:"repost"` + SdkOpen []string `json:"sdk_open"` + WallPost []string `json:"wall_post"` + WallPublish []string `json:"wall_publish"` +} + +// AccountOffer struct. +type AccountOffer struct { + Description string `json:"description"` // Offer description + ID int `json:"id"` // Offer ID + Img string `json:"img"` // URL of the preview image + Instruction string `json:"instruction"` // Instruction how to process the offer + InstructionHTML string `json:"instruction_html"` // Instruction how to process the offer (HTML format) + Price int `json:"price"` // Offer price + ShortDescription string `json:"short_description"` // Offer short description + Tag string `json:"tag"` // Offer tag + Title string `json:"title"` // Offer title +} + +// AccountAccountCounters struct. +type AccountAccountCounters struct { + AppRequests int `json:"app_requests"` // New app requests number + Events int `json:"events"` // New events number + Friends int `json:"friends"` // New friends requests number + FriendsRecommendations int `json:"friends_recommendations"` // New friends recommendations number + FriendsSuggestions int `json:"friends_suggestions"` // New friends suggestions number + Gifts int `json:"gifts"` // New gifts number + Groups int `json:"groups"` // New groups number + Messages int `json:"messages"` // New messages number + Notifications int `json:"notifications"` // New notifications number + Photos int `json:"photos"` // New photo tags number + SDK int `json:"sdk"` // New SDK number + MenuDiscoverBadge int `json:"menu_discover_badge"` // New menu discover badge number + MenuClipsBadge int `json:"menu_clips_badge"` // New menu clips badge number + Videos int `json:"videos"` // New video tags number + Faves int `json:"faves"` // New faves number +} + +// AccountInfo struct. +type AccountInfo struct { + + // Country code. + Country string `json:"country"` + + // Language ID. + Lang int `json:"lang"` + + // Information whether HTTPS-only is enabled. + HTTPSRequired BaseBoolInt `json:"https_required"` + + // Information whether user has been processed intro. + Intro BaseBoolInt `json:"intro"` + + // Information whether wall comments should be hidden. + NoWallReplies BaseBoolInt `json:"no_wall_replies"` + + // Information whether only owners posts should be shown. + OwnPostsDefault BaseBoolInt `json:"own_posts_default"` + + // Two factor authentication is enabled. + TwoFactorRequired BaseBoolInt `json:"2fa_required"` + EuUser BaseBoolInt `json:"eu_user"` + CommunityComments BaseBoolInt `json:"community_comments"` + IsLiveStreamingEnabled BaseBoolInt `json:"is_live_streaming_enabled"` + IsNewLiveStreamingEnabled BaseBoolInt `json:"is_new_live_streaming_enabled"` + LinkRedirects map[string]string `json:"link_redirects"` +} + +// AccountPushSettings struct. +type AccountPushSettings struct { + Conversations AccountPushConversations `json:"conversations"` + + // Information whether notifications are disabled. + Disabled BaseBoolInt `json:"disabled"` + + // Time until that notifications are disabled in Unixtime. + DisabledUntil int `json:"disabled_until"` + Settings AccountPushParams `json:"settings"` +} + +// AccountUserSettings struct. +type AccountUserSettings struct { + Bdate string `json:"bdate"` // User's date of birth + BdateVisibility int `json:"bdate_visibility"` // Information whether user's birthdate are hidden + City BaseObject `json:"city"` + Country BaseCountry `json:"country"` + FirstName string `json:"first_name"` // User first name + HomeTown string `json:"home_town"` // User's hometown + LastName string `json:"last_name"` // User last name + MaidenName string `json:"maiden_name"` // User maiden name + NameRequest AccountNameRequest `json:"name_request"` + Phone string `json:"phone"` // User phone number with some hidden digits + Relation int `json:"relation"` // User relationship status + RelationPartner UsersUserMin `json:"relation_partner"` + RelationPending BaseBoolInt `json:"relation_pending"` // Information whether relation status is pending + RelationRequests []UsersUserMin `json:"relation_requests"` + ScreenName string `json:"screen_name"` // Domain name of the user's page + Sex int `json:"sex"` // User sex + Status string `json:"status"` // User status + ID int `json:"id"` // TODO: Check it https://vk.com/bug230405 (always return 0) +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/ads.go b/vendor/github.com/SevereCloud/vksdk/v2/object/ads.go new file mode 100644 index 00000000..b2d7f135 --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/ads.go @@ -0,0 +1,321 @@ +package object // import "github.com/SevereCloud/vksdk/v2/object" + +// AdsAccesses struct. +type AdsAccesses struct { + ClientID string `json:"client_id"` + Role string `json:"role"` +} + +// AdsAccount struct. +type AdsAccount struct { + AccessRole string `json:"access_role"` + AccountID int `json:"account_id"` // Account ID + AccountName string `json:"account_name"` + AccountStatus BaseBoolInt `json:"account_status"` // Information whether account is active + CanViewBudget BaseBoolInt `json:"can_view_budget"` + AccountType string `json:"account_type"` +} + +// AdsAdLayout struct. +type AdsAdLayout struct { + AdFormat interface{} `json:"ad_format"` // Ad format + Description string `json:"description"` // Ad description + ImageSrc string `json:"image_src"` // Image URL + ImageSrc2x string `json:"image_src_2x"` // URL of the preview image in double size + LinkDomain string `json:"link_domain"` // Domain of advertised object + LinkURL string `json:"link_url"` // URL of advertised object + PreviewLink string `json:"preview_link"` // preview an ad as it is shown on the website + Title string `json:"title"` // Ad title + Video BaseBoolInt `json:"video"` // Information whether the ad is a video + ID string `json:"id"` + CampaignID int `json:"campaign_id"` + GoalType int `json:"goal_type"` + CostType int `json:"cost_type"` + AgeRestriction string `json:"age_restriction"` + LinkType string `json:"link_type"` +} + +// AdsCampaign struct. +type AdsCampaign struct { + AllLimit string `json:"all_limit"` // Campaign's total limit, rubles + DayLimit string `json:"day_limit"` // Campaign's day limit, rubles + ID int `json:"id"` // Campaign ID + Name string `json:"name"` // Campaign title + StartTime int `json:"start_time"` // Campaign start time, as Unixtime + Status int `json:"status"` + StopTime int `json:"stop_time"` // Campaign stop time, as Unixtime + Type string `json:"type"` +} + +// AdsCategory struct. +type AdsCategory struct { + ID int `json:"id"` // Category ID + Name string `json:"name"` // Category name + Subcategories []BaseObjectWithName `json:"subcategories"` +} + +// AdsClient struct. +type AdsClient struct { + AllLimit string `json:"all_limit"` // Client's total limit, rubles + DayLimit string `json:"day_limit"` // Client's day limit, rubles + ID int `json:"id"` // Client ID + Name string `json:"name"` // Client name +} + +// AdsCriteria struct. +type AdsCriteria struct { + AgeFrom int `json:"age_from"` // Age from + AgeTo int `json:"age_to"` // Age to + Apps string `json:"apps"` // Apps IDs + AppsNot string `json:"apps_not"` // Apps IDs to except + Birthday int `json:"birthday"` // Days to birthday + Cities string `json:"cities"` // Cities IDs + CitiesNot string `json:"cities_not"` // Cities IDs to except + Country int `json:"country"` // Country ID + Districts string `json:"districts"` // Districts IDs + Groups string `json:"groups"` // Communities IDs + InterestCategories string `json:"interest_categories"` // Interests categories IDs + Interests string `json:"interests"` // Interests + + // Information whether the user has proceeded VK payments before. + Paying BaseBoolInt `json:"paying"` + Positions string `json:"positions"` // Positions IDs + Religions string `json:"religions"` // Religions IDs + RetargetingGroups string `json:"retargeting_groups"` // Retargeting groups IDs + RetargetingGroupsNot string `json:"retargeting_groups_not"` // Retargeting groups IDs to except + SchoolFrom int `json:"school_from"` // School graduation year from + SchoolTo int `json:"school_to"` // School graduation year to + Schools string `json:"schools"` // Schools IDs + Sex int `json:"sex"` + Stations string `json:"stations"` // Stations IDs + Statuses string `json:"statuses"` // Relationship statuses + Streets string `json:"streets"` // Streets IDs + Travellers int `json:"travellers"` // Travellers only + UniFrom int `json:"uni_from"` // University graduation year from + UniTo int `json:"uni_to"` // University graduation year to + UserBrowsers string `json:"user_browsers"` // Browsers + UserDevices string `json:"user_devices"` // Devices + UserOs string `json:"user_os"` // Operating systems +} + +// AdsDemoStats struct. +type AdsDemoStats struct { + ID int `json:"id"` // Object ID + Stats AdsDemostatsFormat `json:"stats"` + Type string `json:"type"` +} + +// AdsDemostatsFormat struct. +type AdsDemostatsFormat struct { + Age []AdsStatsAge `json:"age"` + Cities []AdsStatsCities `json:"cities"` + Day string `json:"day"` // Day as YYYY-MM-DD + Month string `json:"month"` // Month as YYYY-MM + Overall int `json:"overall"` // 1 if period=overall + Sex []AdsStatsSex `json:"sex"` + SexAge []AdsStatsSexAge `json:"sex_age"` +} + +// AdsFloodStats struct. +type AdsFloodStats struct { + Left int `json:"left"` // Requests left + Refresh int `json:"refresh"` // Time to refresh in seconds +} + +// AdsLinkStatus link status. +type AdsLinkStatus string + +// Possible values. +const ( + // allowed to use in ads. + AdsLinkAllowed AdsLinkStatus = "allowed" + + // prohibited to use for this type of the object. + AdsLinkDisallowed AdsLinkStatus = "disallowed" + + // checking, wait please. + AdsLinkInProgress AdsLinkStatus = "in_progress" +) + +// AdsParagraphs struct. +type AdsParagraphs struct { + Paragraph string `json:"paragraph"` // Rules paragraph +} + +// AdsRejectReason struct. +type AdsRejectReason struct { + Comment string `json:"comment"` // Comment text + Rules []AdsRules `json:"rules"` +} + +// AdsRules struct. +type AdsRules struct { + Paragraphs []AdsParagraphs `json:"paragraphs"` + Title string `json:"title"` // Comment +} + +// AdsStats struct. +type AdsStats struct { + ID int `json:"id"` // Object ID + Stats AdsStatsFormat `json:"stats"` + Type string `json:"type"` +} + +// AdsStatsAge struct. +type AdsStatsAge struct { + ClicksRate float64 `json:"clicks_rate"` // Clicks rate + ImpressionsRate float64 `json:"impressions_rate"` // Impressions rate + Value string `json:"value"` // Age interval +} + +// AdsStatsCities struct. +type AdsStatsCities struct { + ClicksRate float64 `json:"clicks_rate"` // Clicks rate + ImpressionsRate float64 `json:"impressions_rate"` // Impressions rate + Name string `json:"name"` // City name + Value int `json:"value"` // City ID +} + +// AdsStatsFormat struct. +type AdsStatsFormat struct { + Clicks int `json:"clicks"` // Clicks number + Day string `json:"day"` // Day as YYYY-MM-DD + Impressions int `json:"impressions"` // Impressions number + JoinRate int `json:"join_rate"` // Events number + Month string `json:"month"` // Month as YYYY-MM + Overall int `json:"overall"` // 1 if period=overall + Reach int `json:"reach"` // Reach + Spent int `json:"spent"` // Spent funds + VideoClicksSite int `json:"video_clicks_site"` // Click-thoughts to the advertised site + VideoViews int `json:"video_views"` // Video views number + VideoViewsFull int `json:"video_views_full"` // Video views (full video) + VideoViewsHalf int `json:"video_views_half"` // Video views (half of video) +} + +// AdsStatsSex struct. +type AdsStatsSex struct { + ClicksRate float64 `json:"clicks_rate"` // Clicks rate + ImpressionsRate float64 `json:"impressions_rate"` // Impressions rate + Value string `json:"value"` +} + +// AdsStatsSexAge struct. +type AdsStatsSexAge struct { + ClicksRate float64 `json:"clicks_rate"` // Clicks rate + ImpressionsRate float64 `json:"impressions_rate"` // Impressions rate + Value string `json:"value"` // Sex and age interval +} + +// AdsTargSettings struct. +type AdsTargSettings struct { +} + +// AdsTargStats struct. +type AdsTargStats struct { + AudienceCount int `json:"audience_count"` // Audience + RecommendedCpc float64 `json:"recommended_cpc"` // Recommended CPC value + RecommendedCpm float64 `json:"recommended_cpm"` // Recommended CPM value +} + +// AdsTargSuggestions struct. +type AdsTargSuggestions struct { + ID int `json:"id"` // Object ID + Name string `json:"name"` // Object name +} + +// AdsTargSuggestionsCities struct. +type AdsTargSuggestionsCities struct { + ID int `json:"id"` // Object ID + Name string `json:"name"` // Object name + Parent string `json:"parent"` // Parent object +} + +// AdsTargSuggestionsRegions struct. +type AdsTargSuggestionsRegions struct { + ID int `json:"id"` // Object ID + Name string `json:"name"` // Object name + Type string `json:"type"` // Object type +} + +// AdsTargSuggestionsSchools struct. +type AdsTargSuggestionsSchools struct { + Desc string `json:"desc"` // Full school title + ID int `json:"id"` // School ID + Name string `json:"name"` // School title + Parent string `json:"parent"` // City name + Type string `json:"type"` +} + +// AdsTargetGroup struct. +type AdsTargetGroup struct { + AudienceCount int `json:"audience_count"` // Audience + ID int `json:"id"` // Group ID + Lifetime int `json:"lifetime"` // Number of days for user to be in group + Name string `json:"name"` // Group name + LastUpdated int `json:"last_updated"` + IsAudience BaseBoolInt `json:"is_audience"` + IsShared BaseBoolInt `json:"is_shared"` + FileSource BaseBoolInt `json:"file_source"` + APISource BaseBoolInt `json:"api_source"` + LookalikeSource BaseBoolInt `json:"lookalike_source"` + Domain string `json:"domain,omitempty"` // Site domain + Pixel string `json:"pixel,omitempty"` // Pixel code +} + +// AdsUsers struct. +type AdsUsers struct { + Accesses []AdsAccesses `json:"accesses"` + UserID int `json:"user_id"` // User ID +} + +// AdsAd struct. +type AdsAd struct { + Approved string `json:"approved"` + AllLimit string `json:"all_limit"` + Category1ID string `json:"category1_id"` + Category2ID string `json:"category2_id"` + Cpm string `json:"cpm"` + AdFormat int `json:"ad_format"` // Ad format + AdPlatform interface{} `json:"ad_platform"` // Ad platform + CampaignID int `json:"campaign_id"` // Campaign ID + CostType int `json:"cost_type"` + Cpc int `json:"cpc"` // Cost of a click, kopecks + DisclaimerMedical BaseBoolInt `json:"disclaimer_medical"` // Information whether disclaimer is enabled + DisclaimerSpecialist BaseBoolInt `json:"disclaimer_specialist"` // Information whether disclaimer is enabled + DisclaimerSupplements BaseBoolInt `json:"disclaimer_supplements"` // Information whether disclaimer is enabled + Video BaseBoolInt `json:"video"` // Information whether the ad is a video + ImpressionsLimited BaseBoolInt `json:"impressions_limited"` // Information whether impressions are limited + Autobidding BaseBoolInt `json:"autobidding"` + ImpressionsLimit int `json:"impressions_limit"` // Impressions limit + ID string `json:"id"` // Ad ID + Name string `json:"name"` // Ad title + Status int `json:"status"` + CreateTime string `json:"create_time"` + UpdateTime string `json:"update_time"` + GoalType int `json:"goal_type"` + DayLimit string `json:"day_limit"` + StartTime string `json:"start_time"` + StopTime string `json:"stop_time"` + AgeRestriction string `json:"age_restriction"` + EventsRetargetingGroups interface{} `json:"events_retargeting_groups"` + ImpressionsLimitPeriod string `json:"impressions_limit_period"` +} + +// AdsPromotedPostReach struct. +type AdsPromotedPostReach struct { + Hide int `json:"hide"` // Hides amount + ID int `json:"id"` // Object ID from 'ids' parameter + JoinGroup int `json:"join_group"` // Community joins + Links int `json:"links"` // Link clicks + ReachSubscribers int `json:"reach_subscribers"` // Subscribers reach + ReachTotal int `json:"reach_total"` // Total reach + Report int `json:"report"` // Reports amount + ToGroup int `json:"to_group"` // Community clicks + Unsubscribe int `json:"unsubscribe"` // 'Unsubscribe' events amount + VideoViews100p int `json:"video_views_100p"` // Video views for 100 percent + VideoViews25p int `json:"video_views_25p"` // Video views for 25 percent + VideoViews3s int `json:"video_views_3s"` // Video views for 3 seconds + VideoViews50p int `json:"video_views_50p"` // Video views for 50 percent + VideoViews75p int `json:"video_views_75p"` // Video views for 75 percent + VideoViewsStart int `json:"video_views_start"` // Video starts +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/apps.go b/vendor/github.com/SevereCloud/vksdk/v2/object/apps.go new file mode 100644 index 00000000..aaf4bbdb --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/apps.go @@ -0,0 +1,101 @@ +package object // import "github.com/SevereCloud/vksdk/v2/object" + +// AppsApp type application type. +const ( + AppTypeApp = "app" + AppTypeGame = "game" + AppTypeSite = "site" + AppTypeStandalone = "standalone" + AppTypeVkApp = "vk_app" + AppTypeCommunityApp = "community_app" + AppTypeHTML5Game = "html5_game" +) + +// AppsLeaderboardType leaderboardType type. +const ( + AppsLeaderboardTypeNotSupported = iota + AppsLeaderboardTypeLevels + AppsLeaderboardTypePoints +) + +// AppsScreenOrientation supported screen orientation. +type AppsScreenOrientation int + +// Possible values. +const ( + AppsScreenOrientationBoth AppsScreenOrientation = iota + AppsScreenOrientationLandscape + AppsScreenOrientationPortrait +) + +// AppsCatalogBanner struct. +type AppsCatalogBanner struct { + BackgroundColor string `json:"background_color"` + DescriptionColor string `json:"description_color"` + Description string `json:"description"` + TitleColor string `json:"title_color"` +} + +// AppsApp struct. +type AppsApp struct { + AuthorOwnerID int `json:"author_owner_id"` + AuthorURL string `json:"author_url"` + Banner1120 string `json:"banner_1120"` // URL of the app banner with 1120 px in width + Banner560 string `json:"banner_560"` // URL of the app banner with 560 px in width + CatalogPosition int `json:"catalog_position"` // Catalog position + Description string `json:"description"` // Application description + Friends []int `json:"friends"` + Genre string `json:"genre"` // Genre name + GenreID int `json:"genre_id"` // Genre ID + Icon139 string `json:"icon_139"` // URL of the app icon with 139 px in width + Icon150 string `json:"icon_150"` // URL of the app icon with 150 px in width + Icon278 string `json:"icon_278"` // URL of the app icon with 279 px in width + Icon75 string `json:"icon_75"` // URL of the app icon with 75 px in width + ID int `json:"id"` // Application ID + International BaseBoolInt `json:"international"` // Information whether the application is multi language + IsInCatalog BaseBoolInt `json:"is_in_catalog"` // Information whether application is in mobile catalog + Installed BaseBoolInt `json:"installed"` + PushEnabled BaseBoolInt `json:"push_enabled"` + HideTabbar BaseBoolInt `json:"hide_tabbar"` + IsNew BaseBoolInt `json:"is_new"` + New BaseBoolInt `json:"new"` + IsInstalled BaseBoolInt `json:"is_installed"` + LeaderboardType int `json:"leaderboard_type"` + MembersCount int `json:"members_count"` // Members number + PlatformID int `json:"platform_id"` // Application ID in store + + // Date when the application has been published in Unixtime. + PublishedDate int `json:"published_date"` + ScreenName string `json:"screen_name"` // Screen name + Screenshots []PhotosPhoto `json:"screenshots"` + Section string `json:"section"` // Application section name + Title string `json:"title"` // Application title + Type string `json:"type"` + Icon16 string `json:"icon_16"` + Icon576 string `json:"icon_576"` + ScreenOrientation AppsScreenOrientation `json:"screen_orientation"` + CatalogBanner AppsCatalogBanner `json:"catalog_banner"` + + // mobile_controls_type = 0 - прозрачный элемент управления поверх области с игрой; + // mobile_controls_type = 1 - чёрная полоска над областью с игрой; + // mobile_controls_type = 2 - только для vk apps, без контроллов. + MobileControlsType int `json:"mobile_controls_type"` + + // mobile_view_support_type = 0 - игра не использует нижнюю часть экрана на iPhoneX, черная полоса есть. + // mobile_view_support_type = 1 - игра использует нижнюю часть экрана на iPhoneX, черной полосы нет. + MobileViewSupportType int `json:"mobile_view_support_type"` +} + +// AppsLeaderboard struct. +type AppsLeaderboard struct { + Level int `json:"level"` // Level + Points int `json:"points"` // Points number + Score int `json:"score"` // Score number + UserID int `json:"user_id"` // User ID +} + +// AppsScope Scope description. +type AppsScope struct { + Name string `json:"name"` // Scope name + Title string `json:"title"` // Scope title +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/appwidgets.go b/vendor/github.com/SevereCloud/vksdk/v2/object/appwidgets.go new file mode 100644 index 00000000..ac6d2492 --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/appwidgets.go @@ -0,0 +1,20 @@ +package object + +// AppWidgetsAppImageUploadResponse struct. +type AppWidgetsAppImageUploadResponse struct { + Image string `json:"image"` + Hash string `json:"hash"` +} + +// AppWidgetsGroupImageUploadResponse struct. +type AppWidgetsGroupImageUploadResponse struct { + Image string `json:"image"` + Hash string `json:"hash"` +} + +// AppWidgetsImage struct. +type AppWidgetsImage struct { + ID string `json:"id"` + Type string `json:"type"` + Images []BaseImage `json:"images"` +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/audio.go b/vendor/github.com/SevereCloud/vksdk/v2/object/audio.go new file mode 100644 index 00000000..4aec2412 --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/audio.go @@ -0,0 +1,67 @@ +package object // import "github.com/SevereCloud/vksdk/v2/object" + +import ( + "fmt" +) + +// AudioAudio struct. +type AudioAudio struct { + AccessKey string `json:"access_key"` // Access key for the audio + ID int `json:"id"` + OwnerID int `json:"owner_id"` + Artist string `json:"artist"` + Title string `json:"title"` + Duration int `json:"duration"` + Date int `json:"date"` + URL string `json:"url"` + IsHq BaseBoolInt `json:"is_hq"` + IsExplicit BaseBoolInt `json:"is_explicit"` + StoriesAllowed BaseBoolInt `json:"stories_allowed"` + ShortVideosAllowed BaseBoolInt `json:"short_videos_allowed"` + IsFocusTrack BaseBoolInt `json:"is_focus_track"` + IsLicensed BaseBoolInt `json:"is_licensed"` + StoriesCoverAllowed BaseBoolInt `json:"stories_cover_allowed"` + LyricsID int `json:"lyrics_id"` + AlbumID int `json:"album_id"` + GenreID int `json:"genre_id"` + TrackCode string `json:"track_code"` + NoSearch int `json:"no_search"` + MainArtists []AudioAudioArtist `json:"main_artists"` + Ads AudioAds `json:"ads"` + Subtitle string `json:"subtitle"` +} + +// ToAttachment return attachment format. +func (audio AudioAudio) ToAttachment() string { + return fmt.Sprintf("audio%d_%d", audio.OwnerID, audio.ID) +} + +// AudioAds struct. +type AudioAds struct { + ContentID string `json:"content_id"` + Duration string `json:"duration"` + AccountAgeType string `json:"account_age_type"` + PUID1 string `json:"puid1"` + PUID22 string `json:"puid22"` +} + +// AudioAudioArtist struct. +type AudioAudioArtist struct { + Name string `json:"name"` + ID string `json:"id"` + Domain string `json:"domain"` +} + +// AudioAudioUploadResponse struct. +type AudioAudioUploadResponse struct { + Audio string `json:"audio"` + Hash string `json:"hash"` + Redirect string `json:"redirect"` + Server int `json:"server"` +} + +// AudioLyrics struct. +type AudioLyrics struct { + LyricsID int `json:"lyrics_id"` + Text string `json:"text"` +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/board.go b/vendor/github.com/SevereCloud/vksdk/v2/object/board.go new file mode 100644 index 00000000..b8f6b5a3 --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/board.go @@ -0,0 +1,40 @@ +package object // import "github.com/SevereCloud/vksdk/v2/object" + +// BoardTopic struct. +type BoardTopic struct { + Comments int `json:"comments"` // Comments number + Created int `json:"created"` // Date when the topic has been created in Unixtime + CreatedBy int `json:"created_by"` // Creator ID + ID int `json:"id"` // Topic ID + IsClosed BaseBoolInt `json:"is_closed"` // Information whether the topic is closed + IsFixed BaseBoolInt `json:"is_fixed"` // Information whether the topic is fixed + Title string `json:"title"` // Topic title + Updated int `json:"updated"` // Date when the topic has been updated in Unixtime + UpdatedBy int `json:"updated_by"` // ID of user who updated the topic +} + +// BoardTopicComment struct. +type BoardTopicComment struct { + Attachments []WallCommentAttachment `json:"attachments"` + Date int `json:"date"` // Date when the comment has been added in Unixtime + FromID int `json:"from_id"` // Author ID + ID int `json:"id"` // Comment ID + // RealOffset int `json:"real_offset"` // Real position of the comment + Text string `json:"text"` // Comment text + // TopicID int `json:"topic_id"` + // TopicOwnerID int `json:"topic_owner_id"` + Likes BaseLikesInfo `json:"likes"` + CanEdit BaseBoolInt `json:"can_edit"` // Information whether current user can edit the comment +} + +// BoardTopicPoll struct. +type BoardTopicPoll struct { + AnswerID int `json:"answer_id"` // Current user's answer ID + Answers []PollsAnswer `json:"answers"` + Created int `json:"created"` // Date when poll has been created in Unixtime + IsClosed BaseBoolInt `json:"is_closed"` // Information whether the poll is closed + OwnerID int `json:"owner_id"` // Poll owner's ID + PollID int `json:"poll_id"` // Poll ID + Question string `json:"question"` // Poll question + Votes string `json:"votes"` // Votes number +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/database.go b/vendor/github.com/SevereCloud/vksdk/v2/object/database.go new file mode 100644 index 00000000..e8cd9341 --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/database.go @@ -0,0 +1,50 @@ +package object // import "github.com/SevereCloud/vksdk/v2/object" + +// DatabaseCity struct. +type DatabaseCity struct { + ID int `json:"id"` // City ID + Title string `json:"title"` // City title + Area string `json:"area"` + Region string `json:"region"` + Important BaseBoolInt `json:"important"` +} + +// DatabaseMetroStation struct. +type DatabaseMetroStation struct { + ID int `json:"id"` // Metro station ID + Name string `json:"name"` // Metro station name + Color string `json:"color"` // Metro station color + CityID int `json:"city_id"` // Metro station city ID +} + +// DatabaseFaculty struct. +type DatabaseFaculty struct { + ID int `json:"id"` // Faculty ID + Title string `json:"title"` // Faculty title +} + +// DatabaseRegion struct. +type DatabaseRegion struct { + ID int `json:"id"` // Region ID + Title string `json:"title"` // Region title +} + +// DatabaseSchool struct. +type DatabaseSchool struct { + ID int `json:"id"` // School ID + Title string `json:"title"` // School title +} + +// DatabaseStation struct. +type DatabaseStation struct { + CityID int `json:"city_id"` // City ID + Color string `json:"color"` // Hex color code without # + ID int `json:"id"` // Station ID + Name string `json:"name"` // Station name +} + +// DatabaseUniversity struct. +type DatabaseUniversity struct { + ID int `json:"id"` // University ID + Title string `json:"title"` // University title +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/docs.go b/vendor/github.com/SevereCloud/vksdk/v2/object/docs.go new file mode 100644 index 00000000..b7a880fa --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/docs.go @@ -0,0 +1,117 @@ +package object // import "github.com/SevereCloud/vksdk/v2/object" + +import ( + "fmt" +) + +// DocsDoc struct. +type DocsDoc struct { + AccessKey string `json:"access_key"` // Access key for the document + Date int `json:"date"` // Date when file has been uploaded in Unixtime + Ext string `json:"ext"` // File extension + ID int `json:"id"` // Document ID + IsLicensed BaseBoolInt `json:"is_licensed"` + OwnerID int `json:"owner_id"` // Document owner ID + Preview DocsDocPreview `json:"preview"` + Size int `json:"size"` // File size in bites + Title string `json:"title"` // Document title + Type int `json:"type"` // Document type + URL string `json:"url"` // File URL + DocsDocPreviewAudioMessage + DocsDocPreviewGraffiti +} + +// ToAttachment return attachment format. +func (doc DocsDoc) ToAttachment() string { + return fmt.Sprintf("doc%d_%d", doc.OwnerID, doc.ID) +} + +// DocsDocPreview struct. +type DocsDocPreview struct { + Photo DocsDocPreviewPhoto `json:"photo"` + Graffiti DocsDocPreviewGraffiti `json:"graffiti"` + Video DocsDocPreviewVideo `json:"video"` + AudioMessage DocsDocPreviewAudioMessage `json:"audio_message"` +} + +// DocsDocPreviewPhoto struct. +type DocsDocPreviewPhoto struct { + Sizes []DocsDocPreviewPhotoSizes `json:"sizes"` +} + +// MaxSize return the largest DocsDocPreviewPhotoSizes. +func (photo DocsDocPreviewPhoto) MaxSize() (maxPhotoSize DocsDocPreviewPhotoSizes) { + var max float64 + + for _, photoSize := range photo.Sizes { + size := photoSize.Height * photoSize.Width + if size > max { + max = size + maxPhotoSize = photoSize + } + } + + return +} + +// MinSize return the smallest DocsDocPreviewPhotoSizes. +func (photo DocsDocPreviewPhoto) MinSize() (minPhotoSize DocsDocPreviewPhotoSizes) { + var min float64 + + for _, photoSize := range photo.Sizes { + size := photoSize.Height * photoSize.Width + if size < min || min == 0 { + min = size + minPhotoSize = photoSize + } + } + + return +} + +// DocsDocPreviewPhotoSizes struct. +type DocsDocPreviewPhotoSizes struct { + // BUG(VK): json: cannot unmarshal number 162.000000 into Go struct field + // DocsDocPreviewPhotoSizes.doc.preview.photo.sizes.height of type Int + Height float64 `json:"height"` // Height in px + Src string `json:"src"` // URL of the image + Type string `json:"type"` + Width float64 `json:"width"` // Width in px +} + +// DocsDocPreviewGraffiti struct. +type DocsDocPreviewGraffiti struct { + Src string `json:"src"` + Width int `json:"width"` + Height int `json:"height"` +} + +// DocsDocPreviewVideo struct. +type DocsDocPreviewVideo struct { + FileSize int `json:"file_size"` // Video file size in bites + Height int `json:"height"` // Video's height in pixels + Src string `json:"src"` // Video URL + Width int `json:"width"` // Video's width in pixels +} + +// DocsDocPreviewAudioMessage struct. +type DocsDocPreviewAudioMessage struct { + Duration int `json:"duration"` + Waveform []int `json:"waveform"` + LinkOgg string `json:"link_ogg"` + LinkMp3 string `json:"link_mp3"` + Transcript string `json:"transcript"` + TranscriptState string `json:"transcript_state"` +} + +// DocsDocTypes struct. +type DocsDocTypes struct { + Count int `json:"count"` // Number of docs + ID int `json:"id"` // Doc type ID + Name string `json:"name"` // Doc type Title +} + +// DocsDocUploadResponse struct. +type DocsDocUploadResponse struct { + File string `json:"file"` // Uploaded file data +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/donut.go b/vendor/github.com/SevereCloud/vksdk/v2/object/donut.go new file mode 100644 index 00000000..8148969b --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/donut.go @@ -0,0 +1,9 @@ +package object + +// DonutDonatorSubscriptionInfo struct. +type DonutDonatorSubscriptionInfo struct { + OwnerID int `json:"owner_id"` + NextPaymentDate int `json:"next_payment_date"` + Amount int `json:"amount"` + Status string `json:"status"` +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/fave.go b/vendor/github.com/SevereCloud/vksdk/v2/object/fave.go new file mode 100644 index 00000000..802e7f66 --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/fave.go @@ -0,0 +1,41 @@ +package object + +// FaveTag struct. +type FaveTag struct { + ID int `json:"id"` + Name string `json:"name"` +} + +// FavePage struct. +type FavePage struct { + Type string `json:"type"` + Description string `json:"description"` + Tags []FaveTag `json:"tags"` + UpdatedDate int `json:"updated_date"` + User UsersUser `json:"user"` + Group GroupsGroup `json:"group"` +} + +// FaveFavesLink struct. +type FaveFavesLink struct { + URL string `json:"url"` + Title string `json:"title"` + Caption string `json:"caption"` + Description string `json:"description"` + Photo PhotosPhoto `json:"photo"` + IsFavorite BaseBoolInt `json:"is_favorite"` + ID string `json:"id"` +} + +// FaveItem struct. +type FaveItem struct { + Type string `json:"type"` + Seen BaseBoolInt `json:"seen"` + AddedDate int `json:"added_date"` + Tags []FaveTag `json:"tags"` + Link FaveFavesLink `json:"link,omitempty"` + Post WallWallpost `json:"post,omitempty"` + Video VideoVideo `json:"video,omitempty"` + Product MarketMarketItem `json:"product,omitempty"` + Article Article `json:"article,omitempty"` +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/friends.go b/vendor/github.com/SevereCloud/vksdk/v2/object/friends.go new file mode 100644 index 00000000..4f6866c3 --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/friends.go @@ -0,0 +1,63 @@ +package object // import "github.com/SevereCloud/vksdk/v2/object" + +// FriendsFriendStatus FriendStatus type. +const ( + FriendsStatusNotFriend = iota // not a friend + FriendsStatusOutComingRequest // out coming request + FriendsStatusInComingRequest // incoming request + FriendsStatusIsFriend // is friend +) + +// FriendsFriendStatus struct. +type FriendsFriendStatus struct { + FriendStatus int `json:"friend_status"` + ReadState BaseBoolInt `json:"read_state"` // Information whether request is unviewed + RequestMessage string `json:"request_message"` // Message sent with request + Sign string `json:"sign"` // MD5 hash for the result validation + UserID int `json:"user_id"` // User ID +} + +// FriendsFriendsList struct. +type FriendsFriendsList struct { + ID int `json:"id"` // List ID + Name string `json:"name"` // List title +} + +// type friendsMutualFriend struct { +// CommonCount int `json:"common_count"` // Total mutual friends number +// CommonFriends []int `json:"common_friends"` +// ID int `json:"id"` // User ID +// } + +// FriendsRequests struct. +type FriendsRequests struct { + UsersUser + From string `json:"from"` // ID of the user by whom friend has been suggested + Mutual FriendsRequestsMutual `json:"mutual"` + UserID int `json:"user_id"` // User ID + TrackCode string `json:"track_code"` +} + +// FriendsRequestsMutual struct. +type FriendsRequestsMutual struct { + Count int `json:"count"` // Total mutual friends number + Users []int `json:"users"` +} + +// FriendsRequestsXtrMessage struct. +type FriendsRequestsXtrMessage struct { + FriendsRequests + Message string `json:"message"` // Message sent with a request +} + +// FriendsUserXtrLists struct. +type FriendsUserXtrLists struct { + UsersUser + Lists []int `json:"lists"` // IDs of friend lists with user +} + +// FriendsUserXtrPhone struct. +type FriendsUserXtrPhone struct { + UsersUser + Phone string `json:"phone"` // User phone +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/gifts.go b/vendor/github.com/SevereCloud/vksdk/v2/object/gifts.go new file mode 100644 index 00000000..9abe95b2 --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/gifts.go @@ -0,0 +1,34 @@ +package object // import "github.com/SevereCloud/vksdk/v2/object" + +// GiftsGift Privacy type. +const ( + GiftsGiftPrivacyForAll = iota // name and message for all + GiftsGiftPrivacyNameForAll // name for all + GiftsGiftPrivacyRecipientOnly // name and message for recipient only +) + +// GiftsGift struct. +type GiftsGift struct { + Date int `json:"date"` // Date when gist has been sent in Unixtime + FromID int `json:"from_id"` // Gift sender ID + Gift GiftsLayout `json:"gift"` + GiftHash string `json:"gift_hash"` // Hash + ID int `json:"id"` // Gift ID + Message string `json:"message"` // Comment text + Privacy int `json:"privacy"` + + Description string `json:"description"` + PaymentType string `json:"payment_type"` + Price int `json:"price"` + PriceStr string `json:"price_str"` +} + +// GiftsLayout struct. +type GiftsLayout struct { + ID int `json:"id"` + Thumb256 string `json:"thumb_256"` // URL of the preview image with 256 px in width + Thumb48 string `json:"thumb_48"` // URL of the preview image with 48 px in width + Thumb96 string `json:"thumb_96"` // URL of the preview image with 96 px in width + StickersProductID int `json:"stickers_product_id"` + IsStickersStyle BaseBoolInt `json:"is_stickers_style"` +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/groups.go b/vendor/github.com/SevereCloud/vksdk/v2/object/groups.go new file mode 100644 index 00000000..b66c1ee6 --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/groups.go @@ -0,0 +1,807 @@ +package object // import "github.com/SevereCloud/vksdk/v2/object" + +import ( + "encoding/json" + "fmt" + "reflect" +) + +// GroupsAddress WorkInfoStatus of information about timetable. +const ( + WorkStatusNoInformation = "no_information" + WorkStatusTemporarilyClosed = "temporarily_closed" + WorkStatusAlwaysOpened = "always_opened" + WorkStatusTimetable = "timetable" + WorkStatusForeverClosed = "forever_closed" +) + +// GroupsAddress struct. +type GroupsAddress struct { + // Additional address to the place (6 floor, left door). + AdditionalAddress string `json:"additional_address"` + Address string `json:"address"` // String address to the place (Nevsky, 28) + CityID int `json:"city_id"` // City id of address + CountryID int `json:"country_id"` // Country id of address + Distance int `json:"distance"` // Distance from the point + ID int `json:"id"` // Address id + Latitude float64 `json:"latitude"` // Address latitude + Longitude float64 `json:"longitude"` // Address longitude + MetroStationID int `json:"metro_station_id"` // Metro id of address + Phone string `json:"phone"` // Address phone + TimeOffset int `json:"time_offset"` // Time offset int minutes from utc time + Timetable GroupsAddressTimetable `json:"timetable"` // Week timetable for the address + Title string `json:"title"` // Title of the place (Zinger, etc) + WorkInfoStatus string `json:"work_info_status"` // Status of information about timetable +} + +// GroupsAddressTimetable Timetable for a week. +type GroupsAddressTimetable struct { + Fri GroupsAddressTimetableDay `json:"fri"` // Timetable for friday + Mon GroupsAddressTimetableDay `json:"mon"` // Timetable for monday + Sat GroupsAddressTimetableDay `json:"sat"` // Timetable for saturday + Sun GroupsAddressTimetableDay `json:"sun"` // Timetable for sunday + Thu GroupsAddressTimetableDay `json:"thu"` // Timetable for thursday + Tue GroupsAddressTimetableDay `json:"tue"` // Timetable for tuesday + Wed GroupsAddressTimetableDay `json:"wed"` // Timetable for wednesday +} + +// GroupsAddressTimetableDay Timetable for one day. +type GroupsAddressTimetableDay struct { + BreakCloseTime int `json:"break_close_time"` // Close time of the break in minutes + BreakOpenTime int `json:"break_open_time"` // Start time of the break in minutes + CloseTime int `json:"close_time"` // Close time in minutes + OpenTime int `json:"open_time"` // Open time in minutes +} + +// GroupsAddressesInfo struct. +type GroupsAddressesInfo struct { + IsEnabled BaseBoolInt `json:"is_enabled"` // Information whether addresses is enabled + MainAddressID int `json:"main_address_id"` // Main address id for group +} + +// GroupsGroup AdminLevel type. +const ( + GroupsAdminLevelModerator = iota + GroupsAdminLevelEditor + GroupsAdminLevelAdministrator +) + +// GroupsGroup MainSection type. +const ( + GroupsMainSectionAbsent = iota + GroupsMainSectionPhotos + GroupsMainSectionTopics + GroupsMainSectionAudio + GroupsMainSectionVideo + GroupsMainSectionMarket +) + +// GroupsGroup MemberStatus(events_event_attach, newsfeed_event_activity). +const ( + GroupsMemberStatusNotMember = iota + GroupsMemberStatusMember + GroupsMemberStatusNotSure + GroupsMemberStatusDeclined + GroupsMemberStatusHasSentRequest + GroupsMemberStatusInvited +) + +// GroupsGroup Access or IsClosed type. +const ( + GroupsGroupOpen = iota + GroupsGroupClosed + GroupsGroupPrivate +) + +// GroupsGroup AgeLimits. +const ( + GroupsAgeLimitsNo = iota + GroupsAgeLimitsOver16 + GroupsAgeLimitsOver18 +) + +// GroupsGroup type. +const ( + GroupsTypeGroup = "group" + GroupsTypePage = "page" + GroupsTypeEvent = "event" +) + +// GroupsGroup struct. +type GroupsGroup struct { + AdminLevel int `json:"admin_level"` + Deactivated string `json:"deactivated"` // Information whether community is banned + FinishDate int `json:"finish_date"` // Finish date in Unixtime format + ID int `json:"id"` // Community ID + Name string `json:"name"` // Community name + Photo100 string `json:"photo_100"` // URL of square photo of the community with 100 pixels in width + Photo200 string `json:"photo_200"` // URL of square photo of the community with 200 pixels in width + Photo50 string `json:"photo_50"` // URL of square photo of the community with 50 pixels in width + ScreenName string `json:"screen_name"` // Domain of the community page + StartDate int `json:"start_date"` // Start date in Unixtime format + Type string `json:"type"` + Market GroupsMarketInfo `json:"market"` + MemberStatus int `json:"member_status"` // Current user's member status + IsClosed int `json:"is_closed"` + City BaseObject `json:"city"` + Country BaseCountry `json:"country"` + + // Information whether current user is administrator. + IsAdmin BaseBoolInt `json:"is_admin"` + + // Information whether current user is advertiser. + IsAdvertiser BaseBoolInt `json:"is_advertiser"` + + // Information whether current user is member. + IsMember BaseBoolInt `json:"is_member"` + + // Information whether community is in faves. + IsFavorite BaseBoolInt `json:"is_favorite"` + + // Information whether community is adult. + IsAdult BaseBoolInt `json:"is_adult"` + + // Information whether current user is subscribed. + IsSubscribed BaseBoolInt `json:"is_subscribed"` + + // Information whether current user can post on community's wall. + CanPost BaseBoolInt `json:"can_post"` + + // Information whether current user can see all posts on community's wall. + CanSeeAllPosts BaseBoolInt `json:"can_see_all_posts"` + + // Information whether current user can create topic. + CanCreateTopic BaseBoolInt `json:"can_create_topic"` + + // Information whether current user can upload video. + CanUploadVideo BaseBoolInt `json:"can_upload_video"` + + // Information whether current user can upload doc. + CanUploadDoc BaseBoolInt `json:"can_upload_doc"` + + // Information whether community has photo. + HasPhoto BaseBoolInt `json:"has_photo"` + + // Information whether current user can send a message to community. + CanMessage BaseBoolInt `json:"can_message"` + + // Information whether community can send a message to current user. + IsMessagesBlocked BaseBoolInt `json:"is_messages_blocked"` + + // Information whether community can send notifications by phone number to current user. + CanSendNotify BaseBoolInt `json:"can_send_notify"` + + // Information whether current user is subscribed to podcasts. + IsSubscribedPodcasts BaseBoolInt `json:"is_subscribed_podcasts"` + + // Owner in whitelist or not. + CanSubscribePodcasts BaseBoolInt `json:"can_subscribe_podcasts"` + + // Can subscribe to wall. + CanSubscribePosts BaseBoolInt `json:"can_subscribe_posts"` + + // Information whether community has market app. + HasMarketApp BaseBoolInt `json:"has_market_app"` + IsHiddenFromFeed BaseBoolInt `json:"is_hidden_from_feed"` + IsMarketCartEnabled BaseBoolInt `json:"is_market_cart_enabled"` + Verified BaseBoolInt `json:"verified"` // Information whether community is verified + + // Information whether the community has a fire pictogram. + Trending BaseBoolInt `json:"trending"` + Description string `json:"description"` // Community description + WikiPage string `json:"wiki_page"` // Community's main wiki page title + MembersCount int `json:"members_count"` // Community members number + Counters GroupsCountersGroup `json:"counters"` + Cover GroupsCover `json:"cover"` + + // Type of group, start date of event or category of public page. + Activity string `json:"activity"` + FixedPost int `json:"fixed_post"` // Fixed post ID + Status string `json:"status"` // Community status + MainAlbumID int `json:"main_album_id"` // Community's main photo album ID + Links []GroupsLinksItem `json:"links"` + Contacts []GroupsContactsItem `json:"contacts"` + Site string `json:"site"` // Community's website + MainSection int `json:"main_section"` + OnlineStatus GroupsOnlineStatus `json:"online_status"` // Status of replies in community messages + AgeLimits int `json:"age_limits"` // Information whether age limit + BanInfo GroupsGroupBanInfo `json:"ban_info"` // User ban info + Addresses GroupsAddressesInfo `json:"addresses"` // Info about addresses in Groups + LiveCovers GroupsLiveCovers `json:"live_covers"` + CropPhoto UsersCropPhoto `json:"crop_photo"` + Wall int `json:"wall"` + ActionButton GroupsActionButton `json:"action_button"` + TrackCode string `json:"track_code"` + PublicDateLabel string `json:"public_date_label"` + AuthorID int `json:"author_id"` + Phone string `json:"phone"` +} + +// ToMention return mention. +func (group GroupsGroup) ToMention() string { + return fmt.Sprintf("[club%d|%s]", group.ID, group.Name) +} + +// GroupsLiveCovers struct. +type GroupsLiveCovers struct { + IsEnabled BaseBoolInt `json:"is_enabled"` + IsScalable BaseBoolInt `json:"is_scalable"` + StoryIds []string `json:"story_ids"` +} + +// GroupsBanInfo reason type. +const ( + GroupsBanReasonOther = iota + GroupsBanReasonSpam + GroupsBanReasonVerbalAbuse + GroupsBanReasonStrongLanguage + GroupsBanReasonFlood +) + +// GroupsBanInfo struct. +type GroupsBanInfo struct { + AdminID int `json:"admin_id"` // Administrator ID + Comment string `json:"comment"` // Comment for a ban + Date int `json:"date"` // Date when user has been added to blacklist in Unixtime + EndDate int `json:"end_date"` // Date when user will be removed from blacklist in Unixtime + Reason int `json:"reason"` + CommentVisible BaseBoolInt `json:"comment_visible"` +} + +// GroupsCallbackServer struct. +type GroupsCallbackServer struct { + CreatorID int `json:"creator_id"` + ID int `json:"id"` + SecretKey string `json:"secret_key"` + Status string `json:"status"` + Title string `json:"title"` + URL string `json:"url"` +} + +// GroupsCallbackSettings struct. +type GroupsCallbackSettings struct { + APIVersion string `json:"api_version"` // API version used for the events + Events GroupsLongPollEvents `json:"events"` +} + +// GroupsContactsItem struct. +type GroupsContactsItem struct { + Desc string `json:"desc"` // Contact description + Email string `json:"email"` // Contact email + Phone string `json:"phone"` // Contact phone + UserID int `json:"user_id"` // User ID +} + +// GroupsCountersGroup struct. +type GroupsCountersGroup struct { + Addresses int `json:"addresses"` // Addresses number + Albums int `json:"albums"` // Photo albums number + Articles int `json:"articles"` // Articles number + Audios int `json:"audios"` // Audios number + Docs int `json:"docs"` // Docs number + Market int `json:"market"` // Market items number + Photos int `json:"photos"` // Photos number + Topics int `json:"topics"` // Topics number + Videos int `json:"videos"` // Videos number + Narratives int `json:"narratives"` // Narratives number +} + +// GroupsCover struct. +type GroupsCover struct { + Enabled BaseBoolInt `json:"enabled"` // Information whether cover is enabled + Images []BaseImage `json:"images"` +} + +// GroupsGroupBanInfo struct. +type GroupsGroupBanInfo struct { + Comment string `json:"comment"` // Ban comment + EndDate int `json:"end_date"` // End date of ban in Unixtime +} + +// GroupsGroupCategory struct. +type GroupsGroupCategory struct { + ID int `json:"id"` // Category ID + Name string `json:"name"` // Category name + Subcategories []BaseObjectWithName `json:"subcategories"` +} + +// GroupsGroupCategoryFull struct. +type GroupsGroupCategoryFull struct { + ID int `json:"id"` // Category ID + Name string `json:"name"` // Category name + PageCount int `json:"page_count"` // Pages number + PagePreviews []GroupsGroup `json:"page_previews"` + Subcategories []GroupsGroupCategoryFull `json:"subcategories"` +} + +// GroupsGroupCategoryType struct. +type GroupsGroupCategoryType struct { + ID int `json:"id"` + Name string `json:"name"` +} + +// GroupsGroupLink struct. +type GroupsGroupLink struct { + Desc string `json:"desc"` // Link description + EditTitle BaseBoolInt `json:"edit_title"` // Information whether the title can be edited + ImageProcessing BaseBoolInt `json:"image_processing"` // Information whether the image on processing + Name string `json:"name"` + ID int `json:"id"` // Link ID + URL string `json:"url"` // Link URL +} + +// GroupsGroupPublicCategoryList struct. +type GroupsGroupPublicCategoryList struct { + ID int `json:"id"` + Name string `json:"name"` + Subcategories []GroupsGroupCategoryType `json:"subcategories"` +} + +// GroupsGroupSettings Photos type. +const ( + GroupsGroupPhotosDisabled = iota + GroupsGroupPhotosOpen + GroupsGroupPhotosLimited +) + +// GroupsGroupSettings Subject type. +const ( + _ = iota + GroupsGroupSubjectAuto + GroupsGroupSubjectActivityHolidays + GroupsGroupSubjectBusiness + GroupsGroupSubjectPets + GroupsGroupSubjectHealth + GroupsGroupSubjectDatingAndCommunication + GroupsGroupSubjectGames + GroupsGroupSubjectIt + GroupsGroupSubjectCinema + GroupsGroupSubjectBeautyAndFashion + GroupsGroupSubjectCooking + GroupsGroupSubjectArtAndCulture + GroupsGroupSubjectLiterature + GroupsGroupSubjectMobileServicesAndInternet + GroupsGroupSubjectMusic + GroupsGroupSubjectScienceAndTechnology + GroupsGroupSubjectRealEstate + GroupsGroupSubjectNewsAndMedia + GroupsGroupSubjectSecurity + GroupsGroupSubjectEducation + GroupsGroupSubjectHomeAndRenovations + GroupsGroupSubjectPolitics + GroupsGroupSubjectFood + GroupsGroupSubjectIndustry + GroupsGroupSubjectTravel + GroupsGroupSubjectWork + GroupsGroupSubjectEntertainment + GroupsGroupSubjectReligion + GroupsGroupSubjectFamily + GroupsGroupSubjectSports + GroupsGroupSubjectInsurance + GroupsGroupSubjectTelevision + GroupsGroupSubjectGoodsAndServices + GroupsGroupSubjectHobbies + GroupsGroupSubjectFinance + GroupsGroupSubjectPhoto + GroupsGroupSubjectEsoterics + GroupsGroupSubjectElectronicsAndAppliances + GroupsGroupSubjectErotic + GroupsGroupSubjectHumor + GroupsGroupSubjectSocietyHumanities + GroupsGroupSubjectDesignAndGraphics +) + +// GroupsGroupSettings Topics type. +const ( + GroupsGroupTopicsDisabled = iota + GroupsGroupTopicsOpen + GroupsGroupTopicsLimited +) + +// GroupsGroupSettings Docs type. +const ( + GroupsGroupDocsDisabled = iota + GroupsGroupDocsOpen + GroupsGroupDocsLimited +) + +// GroupsGroupSettings Audio type. +const ( + GroupsGroupAudioDisabled = iota + GroupsGroupAudioOpen + GroupsGroupAudioLimited +) + +// GroupsGroupSettings Video type. +const ( + GroupsGroupVideoDisabled = iota + GroupsGroupVideoOpen + GroupsGroupVideoLimited +) + +// GroupsGroupSettings Wall type. +const ( + GroupsGroupWallDisabled = iota + GroupsGroupWallOpen + GroupsGroupWallLimited + GroupsGroupWallClosed +) + +// GroupsGroupSettings Wiki type. +const ( + GroupsGroupWikiDisabled = iota + GroupsGroupWikiOpen + GroupsGroupWikiLimited +) + +// GroupsGroupSettings struct. +type GroupsGroupSettings struct { + Access int `json:"access"` // Community access settings + Address string `json:"address"` // Community's page domain + Audio int `json:"audio"` // Audio settings + Description string `json:"description"` // Community description + Docs int `json:"docs"` // Docs settings + ObsceneWords []string `json:"obscene_words"` // The list of stop words + Photos int `json:"photos"` // Photos settings + PublicCategory int `json:"public_category"` // Information about the group category + PublicCategoryList []GroupsGroupPublicCategoryList `json:"public_category_list"` + + // Information about the group subcategory. + PublicSubcategory int `json:"public_subcategory"` + Rss string `json:"rss"` // URL of the RSS feed + Subject int `json:"subject"` // Community subject ID + SubjectList []GroupsSubjectItem `json:"subject_list"` + Title string `json:"title"` // Community title + Topics int `json:"topics"` // Topics settings + Video int `json:"video"` // Video settings + Wall int `json:"wall"` // Wall settings + Website string `json:"website"` // Community website + Wiki int `json:"wiki"` // Wiki settings + CountryID int `json:"country_id"` + CityID int `json:"city_id"` + Messages int `json:"messages"` + Articles int `json:"articles"` + Events int `json:"events"` + AgeLimits int `json:"age_limits"` + + // Information whether the obscene filter is enabled. + ObsceneFilter BaseBoolInt `json:"obscene_filter"` + + // Information whether the stopwords filter is enabled. + ObsceneStopwords BaseBoolInt `json:"obscene_stopwords"` + LiveCovers struct { + IsEnabled BaseBoolInt `json:"is_enabled"` + } `json:"live_covers"` + Market GroupsMarketInfo `json:"market"` + SectionsList []GroupsSectionsList `json:"sections_list"` + MainSection int `json:"main_section"` + SecondarySection int `json:"secondary_section"` + ActionButton GroupsActionButton `json:"action_button"` + Phone string `json:"phone"` +} + +// GroupsSectionsList struct. +type GroupsSectionsList struct { + ID int `json:"id"` + Name string `json:"name"` +} + +// UnmarshalJSON need for unmarshal dynamic array (Example: [1, "Фотографии"]) to struct. +// +// To unmarshal JSON into a value implementing the Unmarshaler interface, +// Unmarshal calls that value's UnmarshalJSON method. +// See more https://golang.org/pkg/encoding/json/#Unmarshal +func (g *GroupsSectionsList) UnmarshalJSON(data []byte) error { + var alias []interface{} + if err := json.Unmarshal(data, &alias); err != nil { + return err + } + + if len(alias) != 2 { + return &json.UnmarshalTypeError{ + Value: string(data), + Type: reflect.TypeOf((*GroupsSectionsList)(nil)), + } + } + + // default concrete Go type float64 for JSON numbers + id, ok := alias[0].(float64) + if !ok { + return &json.UnmarshalTypeError{ + Value: string(data), + Type: reflect.TypeOf((*GroupsSectionsList)(nil)), + Struct: "GroupsSectionsList", + Field: "ID", + } + } + + name, ok := alias[1].(string) + if !ok { + return &json.UnmarshalTypeError{ + Value: string(data), + Type: reflect.TypeOf((*GroupsSectionsList)(nil)), + Struct: "GroupsSectionsList", + Field: "Name", + } + } + + g.ID = int(id) + g.Name = name + + return nil +} + +// GroupsActionType for action_button in groups. +type GroupsActionType string + +// GroupsActionType enums. +const ( + GroupsActionTypeOpenURL GroupsActionType = "open_url" + GroupsActionTypeSendEmail GroupsActionType = "send_email" + GroupsActionTypeCallPhone GroupsActionType = "call_phone" + GroupsActionTypeCallVK GroupsActionType = "call_vk" + GroupsActionTypeOpenGroupApp GroupsActionType = "open_group_app" + GroupsActionTypeOpenApp GroupsActionType = "open_app" +) + +// GroupsActionButton struct. +type GroupsActionButton struct { + ActionType GroupsActionType `json:"action_type"` + Target GroupsActionButtonTarget `json:"target"` + Title string `json:"title"` + + // IsEnabled for GroupsGroupSettings + IsEnabled BaseBoolInt `json:"is_enabled,omitempty"` +} + +// GroupsActionButtonTarget struct. +type GroupsActionButtonTarget struct { + // ActionType == ActionTypeSendEmail + Email string `json:"email"` + + // ActionType == ActionTypeCallPhone + Phone string `json:"phone"` + + // ActionType == ActionTypeCallVK + UserID int `json:"user_id"` + + // ActionType == ActionTypeOpenURL + URL string `json:"url"` + + // ActionType == ActionTypeOpenApp + GoogleStoreURL string `json:"google_store_url"` + ItunesURL string `json:"itunes_url"` + // URL string `json:"url"` + + // ActionType == ActionTypeOpenGroupApp + AppID int `json:"app_id"` + + IsInternal BaseBoolInt `json:"is_internal"` +} + +// GroupsGroupXtrInvitedBy struct. +type GroupsGroupXtrInvitedBy struct { + AdminLevel int `json:"admin_level"` + ID int `json:"id"` // Community ID + InvitedBy int `json:"invited_by"` // Inviter ID + Name string `json:"name"` // Community name + Photo100 string `json:"photo_100"` // URL of square photo of the community with 100 pixels in width + Photo200 string `json:"photo_200"` // URL of square photo of the community with 200 pixels in width + Photo50 string `json:"photo_50"` // URL of square photo of the community with 50 pixels in width + ScreenName string `json:"screen_name"` // Domain of the community page + Type string `json:"type"` + IsClosed int `json:"is_closed"` // Information whether community is closed + IsAdmin BaseBoolInt `json:"is_admin"` // Information whether current user is manager + IsMember BaseBoolInt `json:"is_member"` // Information whether current user is member + IsAdvertiser BaseBoolInt `json:"is_advertiser"` // Information whether current user is advertiser +} + +// ToMention return mention. +func (group GroupsGroupXtrInvitedBy) ToMention() string { + return fmt.Sprintf("[club%d|%s]", group.ID, group.Name) +} + +// GroupsLinksItem struct. +type GroupsLinksItem struct { + Desc string `json:"desc"` // Link description + EditTitle BaseBoolInt `json:"edit_title"` // Information whether the link title can be edited + ID int `json:"id"` // Link ID + Name string `json:"name"` // Link title + Photo100 string `json:"photo_100"` // URL of square image of the link with 100 pixels in width + Photo50 string `json:"photo_50"` // URL of square image of the link with 50 pixels in width + URL string `json:"url"` // Link URL +} + +// GroupsLongPollEvents struct. +type GroupsLongPollEvents struct { + MessageNew BaseBoolInt `json:"message_new"` + MessageReply BaseBoolInt `json:"message_reply"` + PhotoNew BaseBoolInt `json:"photo_new"` + AudioNew BaseBoolInt `json:"audio_new"` + VideoNew BaseBoolInt `json:"video_new"` + WallReplyNew BaseBoolInt `json:"wall_reply_new"` + WallReplyEdit BaseBoolInt `json:"wall_reply_edit"` + WallReplyDelete BaseBoolInt `json:"wall_reply_delete"` + WallReplyRestore BaseBoolInt `json:"wall_reply_restore"` + WallPostNew BaseBoolInt `json:"wall_post_new"` + BoardPostNew BaseBoolInt `json:"board_post_new"` + BoardPostEdit BaseBoolInt `json:"board_post_edit"` + BoardPostRestore BaseBoolInt `json:"board_post_restore"` + BoardPostDelete BaseBoolInt `json:"board_post_delete"` + PhotoCommentNew BaseBoolInt `json:"photo_comment_new"` + PhotoCommentEdit BaseBoolInt `json:"photo_comment_edit"` + PhotoCommentDelete BaseBoolInt `json:"photo_comment_delete"` + PhotoCommentRestore BaseBoolInt `json:"photo_comment_restore"` + VideoCommentNew BaseBoolInt `json:"video_comment_new"` + VideoCommentEdit BaseBoolInt `json:"video_comment_edit"` + VideoCommentDelete BaseBoolInt `json:"video_comment_delete"` + VideoCommentRestore BaseBoolInt `json:"video_comment_restore"` + MarketCommentNew BaseBoolInt `json:"market_comment_new"` + MarketCommentEdit BaseBoolInt `json:"market_comment_edit"` + MarketCommentDelete BaseBoolInt `json:"market_comment_delete"` + MarketCommentRestore BaseBoolInt `json:"market_comment_restore"` + MarketOrderNew BaseBoolInt `json:"market_order_new"` + MarketOrderEdit BaseBoolInt `json:"market_order_edit"` + PollVoteNew BaseBoolInt `json:"poll_vote_new"` + GroupJoin BaseBoolInt `json:"group_join"` + GroupLeave BaseBoolInt `json:"group_leave"` + GroupChangeSettings BaseBoolInt `json:"group_change_settings"` + GroupChangePhoto BaseBoolInt `json:"group_change_photo"` + GroupOfficersEdit BaseBoolInt `json:"group_officers_edit"` + MessageAllow BaseBoolInt `json:"message_allow"` + MessageDeny BaseBoolInt `json:"message_deny"` + WallRepost BaseBoolInt `json:"wall_repost"` + UserBlock BaseBoolInt `json:"user_block"` + UserUnblock BaseBoolInt `json:"user_unblock"` + MessageEdit BaseBoolInt `json:"message_edit"` + MessageTypingState BaseBoolInt `json:"message_typing_state"` + LeadFormsNew BaseBoolInt `json:"lead_forms_new"` + LikeAdd BaseBoolInt `json:"like_add"` + LikeRemove BaseBoolInt `json:"like_remove"` + VkpayTransaction BaseBoolInt `json:"vkpay_transaction"` + AppPayload BaseBoolInt `json:"app_payload"` + MessageRead BaseBoolInt `json:"message_read"` + MessageEvent BaseBoolInt `json:"message_event"` + DonutSubscriptionCreate BaseBoolInt `json:"donut_subscription_create"` + DonutSubscriptionProlonged BaseBoolInt `json:"donut_subscription_prolonged"` + DonutSubscriptionExpired BaseBoolInt `json:"donut_subscription_expired"` + DonutSubscriptionCancelled BaseBoolInt `json:"donut_subscription_cancelled"` + DonutSubscriptionPriceChanged BaseBoolInt `json:"donut_subscription_price_changed"` + DonutMoneyWithdraw BaseBoolInt `json:"donut_money_withdraw"` + DonutMoneyWithdrawError BaseBoolInt `json:"donut_money_withdraw_error"` + + // Bugs + // MessagesEdit BaseBoolInt `json:"messages_edit"` + // WallNew BaseBoolInt `json:"wall_new"` + // WallNewReply BaseBoolInt `json:"wall_new_reply"` + // WallEditReply BaseBoolInt `json:"wall_edit_reply"` +} + +// GroupsLongPollServer struct. +type GroupsLongPollServer struct { + Key string `json:"key"` // Long Poll key + Server string `json:"server"` // Long Poll server address + Ts string `json:"ts"` // Number of the last event +} + +// TODO: func (g GroupsLongPollServer) GetURL() string { + +// GroupsLongPollSettings struct. +type GroupsLongPollSettings struct { + APIVersion string `json:"api_version"` // API version used for the events + Events GroupsLongPollEvents `json:"events"` + IsEnabled BaseBoolInt `json:"is_enabled"` // Shows whether Long Poll is enabled +} + +// GroupsMarketType ... +type GroupsMarketType string + +// Possible values. +const ( + GroupsMarketBasic GroupsMarketType = "basic" + GroupsMarketAdvanced GroupsMarketType = "advanced" +) + +// GroupsMarketInfo struct. +type GroupsMarketInfo struct { + // information about the type of store. Returned if the group includes + // the "Products" section. + Type GroupsMarketType `json:"type,omitempty"` + ContactID int `json:"contact_id,omitempty"` // Contact person ID + Currency MarketCurrency `json:"currency,omitempty"` + CurrencyText string `json:"currency_text,omitempty"` // Currency name + Enabled BaseBoolInt `json:"enabled"` // Information whether the market is enabled + CommentsEnabled BaseBoolInt `json:"comments_enabled,omitempty"` + CanMessage BaseBoolInt `json:"can_message,omitempty"` + MainAlbumID int `json:"main_album_id,omitempty"` // Main market album ID + PriceMax string `json:"price_max,omitempty"` // Maximum price + PriceMin string `json:"price_min,omitempty"` // Minimum price + Wiki PagesWikipageFull `json:"wiki,omitempty"` + CityIDs []int `json:"city_ids"` + CountryIDs []int `json:"country_ids,omitempty"` +} + +// GroupsGroupRole Role type. +const ( + GroupsGroupRoleModerator = "moderator" + GroupsGroupRoleEditor = "editor" + GroupsGroupRoleAdministrator = "administrator" + GroupsGroupRoleCreator = "creator" +) + +// GroupsMemberRole struct. +type GroupsMemberRole struct { + ID int `json:"id"` // User ID + Role string `json:"role"` + Permissions []string `json:"permissions"` +} + +// GroupsMemberRoleXtrUsersUser struct. +type GroupsMemberRoleXtrUsersUser struct { + UsersUser + Role string `json:"role"` + Permissions []string `json:"permissions"` +} + +// GroupsMemberStatus struct. +type GroupsMemberStatus struct { + Member BaseBoolInt `json:"member"` // Information whether user is a member of the group + UserID int `json:"user_id"` // User ID + Permissions []string `json:"permissions"` +} + +// GroupsMemberStatusFull struct. +type GroupsMemberStatusFull struct { + Invitation BaseBoolInt `json:"invitation"` // Information whether user has been invited to the group + Member BaseBoolInt `json:"member"` // Information whether user is a member of the group + Request BaseBoolInt `json:"request"` // Information whether user has send request to the group + CanInvite BaseBoolInt `json:"can_invite"` // Information whether user can be invite + CanRecall BaseBoolInt `json:"can_recall"` // Information whether user's invite to the group can be recalled + UserID int `json:"user_id"` // User ID +} + +// GroupsOnlineStatus Status type. +const ( + GroupsOnlineStatusTypeNone = "none" + GroupsOnlineStatusTypeOnline = "online" + GroupsOnlineStatusTypeAnswerMark = "answer_mark" +) + +// GroupsOnlineStatus struct. +type GroupsOnlineStatus struct { + Minutes int `json:"minutes"` // Estimated time of answer (for status = answer_mark) + Status string `json:"status"` +} + +// GroupsOwnerXtrBanInfo struct. +type GroupsOwnerXtrBanInfo struct { + BanInfo GroupsBanInfo `json:"ban_info"` + Group GroupsGroup `json:"group"` + Profile UsersUser `json:"profile"` + Type string `json:"type"` +} + +// GroupsSubjectItem struct. +type GroupsSubjectItem struct { + ID int `json:"id"` + Name string `json:"name"` +} + +// GroupsTokenPermissionSetting struct. +type GroupsTokenPermissionSetting struct { + Name string `json:"name"` + Setting int `json:"setting"` +} + +// GroupsTokenPermissions struct. +type GroupsTokenPermissions struct { + Mask int `json:"mask"` + Permissions []GroupsTokenPermissionSetting `json:"permissions"` +} + +// GroupsTag struct. +type GroupsTag struct { + ID int `json:"id"` + Name string `json:"name"` + Color string `json:"color"` +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/leadforms.go b/vendor/github.com/SevereCloud/vksdk/v2/object/leadforms.go new file mode 100644 index 00000000..6159fdf2 --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/leadforms.go @@ -0,0 +1,44 @@ +package object + +// LeadFormsForm struct. +type LeadFormsForm struct { + FormID int `json:"form_id"` + GroupID int `json:"group_id"` + Photo interface{} `json:"photo"` + Name string `json:"name"` + Title string `json:"title"` + Description string `json:"description"` + Confirmation string `json:"confirmation"` + SiteLinkURL string `json:"site_link_url"` + PolicyLinkURL string `json:"policy_link_url"` + Questions []struct { + Type string `json:"type"` + Key string `json:"key"` + Label string `json:"label,omitempty"` + Options []struct { + Label string `json:"label"` + Key string `json:"key"` + } `json:"options,omitempty"` + } `json:"questions"` + Active int `json:"active"` + LeadsCount int `json:"leads_count"` + PixelCode string `json:"pixel_code"` + OncePerUser int `json:"once_per_user"` + NotifyAdmins string `json:"notify_admins"` + NotifyEmails string `json:"notify_emails"` + URL string `json:"url"` +} + +// LeadFormsLead struct. +type LeadFormsLead struct { + LeadID string `json:"lead_id"` + UserID string `json:"user_id"` + Date string `json:"date"` + Answers []struct { + Key string `json:"key"` + Answer struct { + Value string `json:"value"` + } `json:"answer"` + } `json:"answers"` + AdID string `json:"ad_id"` +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/leads.go b/vendor/github.com/SevereCloud/vksdk/v2/object/leads.go new file mode 100644 index 00000000..a5d78fa0 --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/leads.go @@ -0,0 +1,55 @@ +package object // import "github.com/SevereCloud/vksdk/v2/object" + +// LeadsChecked struct. +type LeadsChecked struct { + Reason string `json:"reason"` // Reason why user can't start the lead + Result string `json:"result"` + Sid string `json:"sid"` // Session ID + StartLink string `json:"start_link"` // URL user should open to start the lead +} + +// LeadsComplete struct. +type LeadsComplete struct { + Cost int `json:"cost"` // Offer cost + Limit int `json:"limit"` // Offer limit + Spent int `json:"spent"` // Amount of spent votes + Success BaseBoolInt `json:"success"` + TestMode BaseBoolInt `json:"test_mode"` // Information whether test mode is enabled +} + +// LeadsEntry struct. +type LeadsEntry struct { + Aid int `json:"aid"` // Application ID + Comment string `json:"comment"` // Comment text + Date int `json:"date"` // Date when the action has been started in Unixtime + Sid string `json:"sid"` // Session string ID + StartDate int `json:"start_date"` // Start date in Unixtime (for status=2) + Status int `json:"status"` // Action type + TestMode BaseBoolInt `json:"test_mode"` // Information whether test mode is enabled + UID int `json:"uid"` // User ID +} + +// LeadsLead struct. +type LeadsLead struct { + Completed int `json:"completed"` // Completed offers number + Cost int `json:"cost"` // Offer cost + Days LeadsLeadDays `json:"days"` + Impressions int `json:"impressions"` // Impressions number + Limit int `json:"limit"` // Lead limit + Spent int `json:"spent"` // Amount of spent votes + Started int `json:"started"` // Started offers number +} + +// LeadsLeadDays struct. +type LeadsLeadDays struct { + Completed int `json:"completed"` // Completed offers number + Impressions int `json:"impressions"` // Impressions number + Spent int `json:"spent"` // Amount of spent votes + Started int `json:"started"` // Started offers number +} + +// LeadsStart struct. +type LeadsStart struct { + TestMode BaseBoolInt `json:"test_mode"` // Information whether test mode is enabled + VkSid string `json:"vk_sid"` // Session data +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/market.go b/vendor/github.com/SevereCloud/vksdk/v2/object/market.go new file mode 100644 index 00000000..8f5d172f --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/market.go @@ -0,0 +1,244 @@ +package object // import "github.com/SevereCloud/vksdk/v2/object" + +import ( + "bytes" + "encoding/json" + "fmt" +) + +// Information whether the MarketMarketItem is available. +const ( + MarketItemAvailable = iota + MarketItemRemoved + MarketItemUnavailable +) + +// MarketCurrency struct. +type MarketCurrency struct { + ID int `json:"id"` // Currency ID + Name string `json:"name"` // Currency sign +} + +// MarketMarketAlbum struct. +type MarketMarketAlbum struct { + Count int `json:"count"` // Items number + ID int `json:"id"` // Market album ID + OwnerID int `json:"owner_id"` // Market album owner's ID + Photo PhotosPhoto `json:"photo"` + Title string `json:"title"` // Market album title + UpdatedTime int `json:"updated_time"` // Date when album has been updated last time in Unixtime +} + +// ToAttachment return attachment format. +func (marketAlbum MarketMarketAlbum) ToAttachment() string { + return fmt.Sprintf("market_album%d_%d", marketAlbum.OwnerID, marketAlbum.ID) +} + +// MarketMarketCategory struct. +type MarketMarketCategory struct { + ID int `json:"id"` // Category ID + Name string `json:"name"` // Category name + Section MarketSection `json:"section"` +} + +// MarketMarketItem struct. +type MarketMarketItem struct { + AccessKey string `json:"access_key"` // Access key for the market item + Availability int `json:"availability"` // Information whether the item is available + Category MarketMarketCategory `json:"category"` + + // Date when the item has been created in Unixtime. + Date int `json:"date,omitempty"` + Description string `json:"description"` // Item description + ID int `json:"id"` // Item ID + OwnerID int `json:"owner_id"` // Item owner's ID + Price MarketPrice `json:"price"` + ThumbPhoto string `json:"thumb_photo"` // URL of the preview image + Title string `json:"title"` // Item title + CanComment BaseBoolInt `json:"can_comment"` + CanRepost BaseBoolInt `json:"can_repost"` + IsFavorite BaseBoolInt `json:"is_favorite"` + IsMainVariant BaseBoolInt `json:"is_main_variant"` + AlbumsIDs []int `json:"albums_ids"` + Photos []PhotosPhoto `json:"photos"` + Likes BaseLikesInfo `json:"likes"` + Reposts BaseRepostsInfo `json:"reposts"` + ViewsCount int `json:"views_count,omitempty"` + URL string `json:"url"` // URL to item + ButtonTitle string `json:"button_title"` + ExternalID string `json:"external_id"` + Dimensions MarketDimensions `json:"dimensions"` + Weight int `json:"weight"` + VariantsGroupingID int `json:"variants_grouping_id"` + PropertyValues []MarketMarketItemProperty `json:"property_values"` + CartQuantity int `json:"cart_quantity"` +} + +// UnmarshalJSON MarketMarketItem. +// +// BUG(VK): https://github.com/SevereCloud/vksdk/issues/147 +func (market *MarketMarketItem) UnmarshalJSON(data []byte) error { + if bytes.Equal(data, []byte("false")) { + return nil + } + + type renamedMarketMarketItem MarketMarketItem + + var r renamedMarketMarketItem + + err := json.Unmarshal(data, &r) + if err != nil { + return err + } + + *market = MarketMarketItem(r) + + return nil +} + +// MarketMarketItemProperty struct. +type MarketMarketItemProperty struct { + VariantID int `json:"variant_id"` + VariantName string `json:"variant_name"` + PropertyName string `json:"property_name"` +} + +// MarketDimensions struct. +type MarketDimensions struct { + Width int `json:"width"` + Height int `json:"height"` + Length int `json:"length"` +} + +// ToAttachment return attachment format. +func (market MarketMarketItem) ToAttachment() string { + return fmt.Sprintf("market%d_%d", market.OwnerID, market.ID) +} + +// MarketPrice struct. +type MarketPrice struct { + Amount string `json:"amount"` // Amount + Currency MarketCurrency `json:"currency"` + DiscountRate int `json:"discount_rate"` + OldAmount string `json:"old_amount"` + Text string `json:"text"` // Text + OldAmountText string `json:"old_amount_text"` +} + +// UnmarshalJSON MarketPrice. +// +// BUG(VK): unavailable product, in fave.get return []. +func (m *MarketPrice) UnmarshalJSON(data []byte) error { + if bytes.Equal(data, []byte("[]")) { + return nil + } + + type renamedMarketPrice MarketPrice + + var r renamedMarketPrice + + err := json.Unmarshal(data, &r) + if err != nil { + return err + } + + *m = MarketPrice(r) + + return nil +} + +// MarketSection struct. +type MarketSection struct { + ID int `json:"id"` // Section ID + Name string `json:"name"` // Section name +} + +// MarketOrderStatus order status. +type MarketOrderStatus int + +// Possible values. +const ( + MarketOrderNew MarketOrderStatus = iota + MarketOrderPending + MarketOrderProcessing + MarketOrderShipped + MarketOrderComplete + MarketOrderCanceled + MarketOrderRefund +) + +// MarketOrder struct. +type MarketOrder struct { + ID int `json:"id"` + GroupID int `json:"group_id"` + UserID int `json:"user_id"` + Date int `json:"date"` + Status MarketOrderStatus `json:"status"` + ItemsCount int `json:"items_count"` + TotalPrice MarketPrice `json:"total_price"` + DisplayOrderID string `json:"display_order_id"` + Comment string `json:"comment"` + PreviewOrderItems []MarketOrderItem `json:"preview_order_items"` + PriceDetails []MarketPriceDetail `json:"price_details"` + Delivery MarketOrderDelivery `json:"delivery"` + Recipient MarketOrderRecipient `json:"recipient"` +} + +// MarketOrderDelivery struct. +type MarketOrderDelivery struct { + TrackNumber string `json:"track_number"` + TrackLink string `json:"track_link"` + Address string `json:"address"` + Type string `json:"type"` + DeliveryPoint MarketDeliveryPoint `json:"delivery_point,omitempty"` +} + +// MarketDeliveryPoint struct. +type MarketDeliveryPoint struct { + ID int `json:"id"` + ExternalID string `json:"external_id"` + OutpostOnly BaseBoolInt `json:"outpost_only"` + CashOnly BaseBoolInt `json:"cash_only"` + Address MarketDeliveryPointAddress `json:"address"` + DisplayTitle string `json:"display_title"` + ServiceID int `json:"service_id"` +} + +// MarketDeliveryPointAddress struct. +type MarketDeliveryPointAddress struct { + ID int `json:"id"` + Address string `json:"address"` + CityID int `json:"city_id"` + CountryID int `json:"country_id"` + Latitude float64 `json:"latitude"` + Longitude float64 `json:"longitude"` + Phone string `json:"phone"` + Title string `json:"title"` + WorkInfoStatus string `json:"work_info_status"` +} + +// MarketOrderRecipient struct. +type MarketOrderRecipient struct { + Name string `json:"name"` + Phone string `json:"phone"` + DisplayText string `json:"display_text"` +} + +// MarketOrderItem struct. +type MarketOrderItem struct { + OwnerID int `json:"owner_id"` + ItemID int `json:"item_id"` + Price MarketPrice `json:"price"` + Quantity int `json:"quantity"` + Item MarketMarketItem `json:"item"` + Title string `json:"title"` + Photo PhotosPhoto `json:"photo"` + Variants []string `json:"variants"` +} + +// MarketPriceDetail struct. +type MarketPriceDetail struct { + Title string `json:"title"` + Price MarketPrice `json:"price"` + IsAccent BaseBoolInt `json:"is_accent,omitempty"` +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/messages.go b/vendor/github.com/SevereCloud/vksdk/v2/object/messages.go new file mode 100644 index 00000000..dc2648b1 --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/messages.go @@ -0,0 +1,756 @@ +package object // import "github.com/SevereCloud/vksdk/v2/object" + +import ( + "encoding/json" + "fmt" +) + +// MessagesAudioMessage struct. +type MessagesAudioMessage struct { + AccessKey string `json:"access_key"` // Access key for the document + ID int `json:"id"` // Document ID + OwnerID int `json:"owner_id"` // Document owner ID + Duration int `json:"duration"` // Audio message duration in seconds + LinkMp3 string `json:"link_mp3"` // MP3 file URL + LinkOgg string `json:"link_ogg"` // OGG file URL + Waveform []int `json:"waveform"` // Sound visualisation +} + +// ToAttachment return attachment format. +func (doc MessagesAudioMessage) ToAttachment() string { + return fmt.Sprintf("doc%d_%d", doc.OwnerID, doc.ID) +} + +// MessagesGraffiti struct. +type MessagesGraffiti struct { + AccessKey string `json:"access_key"` // Access key for the document + ID int `json:"id"` // Document ID + OwnerID int `json:"owner_id"` // Document owner ID + URL string `json:"url"` // Graffiti URL + Width int `json:"width"` // Graffiti width + Height int `json:"height"` // Graffiti height +} + +// ToAttachment return attachment format. +func (doc MessagesGraffiti) ToAttachment() string { + return fmt.Sprintf("doc%d_%d", doc.OwnerID, doc.ID) +} + +// MessagesMessage struct. +type MessagesMessage struct { + // Only for messages from community. Contains user ID of community admin, + // who sent this message. + AdminAuthorID int `json:"admin_author_id"` + Action MessagesMessageAction `json:"action"` + Attachments []MessagesMessageAttachment `json:"attachments"` + + // Unique auto-incremented number for all messages with this peer. + ConversationMessageID int `json:"conversation_message_id"` + + // Date when the message has been sent in Unixtime. + Date int `json:"date"` + + // Message author's ID. + FromID int `json:"from_id"` + + // Forwarded messages. + FwdMessages []MessagesMessage `json:"fwd_Messages"` + ReplyMessage *MessagesMessage `json:"reply_message"` + Geo BaseMessageGeo `json:"geo"` + PinnedAt int `json:"pinned_at,omitempty"` + ID int `json:"id"` // Message ID + Deleted BaseBoolInt `json:"deleted"` // Is it an deleted message + Important BaseBoolInt `json:"important"` // Is it an important message + IsHidden BaseBoolInt `json:"is_hidden"` + IsCropped BaseBoolInt `json:"is_cropped"` + Out BaseBoolInt `json:"out"` // Information whether the message is outcoming + WasListened BaseBoolInt `json:"was_listened,omitempty"` + Keyboard MessagesKeyboard `json:"keyboard"` + Template MessagesTemplate `json:"template"` + Payload string `json:"payload"` + PeerID int `json:"peer_id"` // Peer ID + + // ID used for sending messages. It returned only for outgoing messages. + RandomID int `json:"random_id"` + Ref string `json:"ref"` + RefSource string `json:"ref_source"` + Text string `json:"text"` // Message text + UpdateTime int `json:"update_time"` // Date when the message has been updated in Unixtime + MembersCount int `json:"members_count"` // Members number + ExpireTTL int `json:"expire_ttl"` +} + +// MessagesBasePayload struct. +type MessagesBasePayload struct { + ButtonType string `json:"button_type,omitempty"` + Command string `json:"command,omitempty"` + Payload string `json:"payload,omitempty"` +} + +// Command for MessagesBasePayload. +const ( + CommandNotSupportedButton = "not_supported_button" +) + +// MessagesKeyboard struct. +type MessagesKeyboard struct { + AuthorID int `json:"author_id,omitempty"` // Community or bot, which set this keyboard + Buttons [][]MessagesKeyboardButton `json:"buttons"` + OneTime BaseBoolInt `json:"one_time,omitempty"` // Should this keyboard disappear on first use + Inline BaseBoolInt `json:"inline,omitempty"` +} + +// NewMessagesKeyboard returns a new MessagesKeyboard. +func NewMessagesKeyboard(oneTime BaseBoolInt) *MessagesKeyboard { + return &MessagesKeyboard{ + Buttons: [][]MessagesKeyboardButton{}, + OneTime: oneTime, + } +} + +// NewMessagesKeyboardInline returns a new inline MessagesKeyboard. +func NewMessagesKeyboardInline() *MessagesKeyboard { + return &MessagesKeyboard{ + Buttons: [][]MessagesKeyboardButton{}, + Inline: true, + } +} + +// AddRow add row in MessagesKeyboard. +func (keyboard *MessagesKeyboard) AddRow() *MessagesKeyboard { + if len(keyboard.Buttons) == 0 { + keyboard.Buttons = make([][]MessagesKeyboardButton, 1) + } else { + row := make([]MessagesKeyboardButton, 0) + keyboard.Buttons = append(keyboard.Buttons, row) + } + + return keyboard +} + +// AddTextButton add Text button in last row. +func (keyboard *MessagesKeyboard) AddTextButton(label string, payload interface{}, color string) *MessagesKeyboard { + b, err := json.Marshal(payload) + if err != nil { + panic(err) + } + + button := MessagesKeyboardButton{ + Action: MessagesKeyboardButtonAction{ + Type: ButtonText, + Label: label, + Payload: string(b), + }, + Color: color, + } + + lastRow := len(keyboard.Buttons) - 1 + keyboard.Buttons[lastRow] = append(keyboard.Buttons[lastRow], button) + + return keyboard +} + +// AddOpenLinkButton add Open Link button in last row. +func (keyboard *MessagesKeyboard) AddOpenLinkButton(link, label string, payload interface{}) *MessagesKeyboard { + b, err := json.Marshal(payload) + if err != nil { + panic(err) + } + + button := MessagesKeyboardButton{ + Action: MessagesKeyboardButtonAction{ + Type: ButtonOpenLink, + Payload: string(b), + Label: label, + Link: link, + }, + } + + lastRow := len(keyboard.Buttons) - 1 + keyboard.Buttons[lastRow] = append(keyboard.Buttons[lastRow], button) + + return keyboard +} + +// AddLocationButton add Location button in last row. +func (keyboard *MessagesKeyboard) AddLocationButton(payload interface{}) *MessagesKeyboard { + b, err := json.Marshal(payload) + if err != nil { + panic(err) + } + + button := MessagesKeyboardButton{ + Action: MessagesKeyboardButtonAction{ + Type: ButtonLocation, + Payload: string(b), + }, + } + + lastRow := len(keyboard.Buttons) - 1 + keyboard.Buttons[lastRow] = append(keyboard.Buttons[lastRow], button) + + return keyboard +} + +// AddVKPayButton add VK Pay button in last row. +func (keyboard *MessagesKeyboard) AddVKPayButton(payload interface{}, hash string) *MessagesKeyboard { + b, err := json.Marshal(payload) + if err != nil { + panic(err) + } + + button := MessagesKeyboardButton{ + Action: MessagesKeyboardButtonAction{ + Type: ButtonVKPay, + Payload: string(b), + Hash: hash, + }, + } + + lastRow := len(keyboard.Buttons) - 1 + keyboard.Buttons[lastRow] = append(keyboard.Buttons[lastRow], button) + + return keyboard +} + +// AddVKAppsButton add VK Apps button in last row. +func (keyboard *MessagesKeyboard) AddVKAppsButton( + appID, ownerID int, + payload interface{}, + label, hash string, +) *MessagesKeyboard { + b, err := json.Marshal(payload) + if err != nil { + panic(err) + } + + button := MessagesKeyboardButton{ + Action: MessagesKeyboardButtonAction{ + Type: ButtonVKApp, + AppID: appID, + OwnerID: ownerID, + Payload: string(b), + Label: label, + Hash: hash, + }, + } + + lastRow := len(keyboard.Buttons) - 1 + keyboard.Buttons[lastRow] = append(keyboard.Buttons[lastRow], button) + + return keyboard +} + +// AddCallbackButton add Callback button in last row. +func (keyboard *MessagesKeyboard) AddCallbackButton(label string, payload interface{}, color string) *MessagesKeyboard { + b, err := json.Marshal(payload) + if err != nil { + panic(err) + } + + button := MessagesKeyboardButton{ + Action: MessagesKeyboardButtonAction{ + Type: ButtonCallback, + Label: label, + Payload: string(b), + }, + Color: color, + } + + lastRow := len(keyboard.Buttons) - 1 + keyboard.Buttons[lastRow] = append(keyboard.Buttons[lastRow], button) + + return keyboard +} + +// ToJSON returns the JSON encoding of MessagesKeyboard. +func (keyboard MessagesKeyboard) ToJSON() string { + b, _ := json.Marshal(keyboard) + return string(b) +} + +// MessagesKeyboardButton struct. +type MessagesKeyboardButton struct { + Action MessagesKeyboardButtonAction `json:"action"` + Color string `json:"color,omitempty"` // Button color +} + +// MessagesKeyboardButtonAction struct. +type MessagesKeyboardButtonAction struct { + AppID int `json:"app_id,omitempty"` // Fragment value in app link like vk.com/app{app_id}_-654321#hash + Hash string `json:"hash,omitempty"` // Fragment value in app link like vk.com/app123456_-654321#{hash} + Label string `json:"label,omitempty"` // Label for button + OwnerID int `json:"owner_id,omitempty"` // Fragment value in app link like vk.com/app123456_{owner_id}#hash + Payload string `json:"payload,omitempty"` // Additional data sent along with message for developer convenience + Type string `json:"type"` // Button type + Link string `json:"link,omitempty"` // Link URL +} + +// MessagesEventDataShowSnackbar struct. +type MessagesEventDataShowSnackbar struct { + Text string `json:"text,omitempty"` +} + +// MessagesEventDataOpenLink struct. +type MessagesEventDataOpenLink struct { + Link string `json:"link,omitempty"` +} + +// MessagesEventDataOpenApp struct. +type MessagesEventDataOpenApp struct { + AppID int `json:"app_id,omitempty"` + OwnerID int `json:"owner_id,omitempty"` + Hash string `json:"hash,omitempty"` +} + +// MessagesEventData struct. +type MessagesEventData struct { + Type string `json:"type"` + MessagesEventDataShowSnackbar + MessagesEventDataOpenLink + MessagesEventDataOpenApp +} + +// NewMessagesEventDataShowSnackbar show disappearing message. +// +// Contains the field text - the text you want to print +// (maximum 90 characters). Snackbar is shown for 10 seconds and automatically +// hides, while the user has the ability to flick it off the screen. +func NewMessagesEventDataShowSnackbar(text string) *MessagesEventData { + return &MessagesEventData{ + Type: "show_snackbar", + MessagesEventDataShowSnackbar: MessagesEventDataShowSnackbar{ + Text: text, + }, + } +} + +// NewMessagesEventDataOpenLink open the link. Click on the specified address. +func NewMessagesEventDataOpenLink(link string) *MessagesEventData { + return &MessagesEventData{ + Type: "open_link", + MessagesEventDataOpenLink: MessagesEventDataOpenLink{ + Link: link, + }, + } +} + +// NewMessagesEventDataOpenApp open the link. Click on the specified address. +func NewMessagesEventDataOpenApp(appID, ownerID int, hash string) *MessagesEventData { + return &MessagesEventData{ + Type: "open_app", + MessagesEventDataOpenApp: MessagesEventDataOpenApp{ + AppID: appID, + OwnerID: ownerID, + Hash: hash, + }, + } +} + +// ToJSON returns the JSON encoding of MessagesEventData. +func (eventData MessagesEventData) ToJSON() string { + b, _ := json.Marshal(eventData) + return string(b) +} + +// MessagesTemplate struct. +// +// https://vk.com/dev/bot_docs_templates +type MessagesTemplate struct { + Type string `json:"type"` + Elements []MessagesTemplateElement `json:"elements"` +} + +// ToJSON returns the JSON encoding of MessagesKeyboard. +func (template MessagesTemplate) ToJSON() string { + b, _ := json.Marshal(template) + return string(b) +} + +// MessagesTemplateElement struct. +type MessagesTemplateElement struct { + MessagesTemplateElementCarousel +} + +// MessagesTemplateElementCarousel struct. +type MessagesTemplateElementCarousel struct { + Title string `json:"title"` + Action MessagesTemplateElementCarouselAction `json:"action"` + Description string `json:"description"` + Photo PhotosPhoto `json:"photo"` + Buttons []MessagesKeyboardButton `json:"buttons"` +} + +// MessagesTemplateElementCarouselAction struct. +type MessagesTemplateElementCarouselAction struct { + Type string `json:"type"` + Link string `json:"link"` +} + +// MessageContentSourceMessage ... +type MessageContentSourceMessage struct { + OwnerID int `json:"owner_id,omitempty"` + PeerID int `json:"peer_id,omitempty"` + ConversationMessageID int `json:"conversation_message_id,omitempty"` +} + +// MessageContentSourceURL ... +type MessageContentSourceURL struct { + URL string `json:"url,omitempty"` +} + +// MessageContentSource struct. +// +// https://vk.com/dev/bots_docs_2 +type MessageContentSource struct { + Type string `json:"type"` + MessageContentSourceMessage // type message + MessageContentSourceURL // type url + +} + +// NewMessageContentSourceMessage ... +func NewMessageContentSourceMessage(ownerID, peerID, conversationMessageID int) *MessageContentSource { + return &MessageContentSource{ + Type: "message", + MessageContentSourceMessage: MessageContentSourceMessage{ + OwnerID: ownerID, + PeerID: peerID, + ConversationMessageID: conversationMessageID, + }, + } +} + +// NewMessageContentSourceURL ... +func NewMessageContentSourceURL(u string) *MessageContentSource { + return &MessageContentSource{ + Type: "url", + MessageContentSourceURL: MessageContentSourceURL{ + URL: u, + }, + } +} + +// ToJSON returns the JSON encoding of MessageContentSource. +func (contentSource MessageContentSource) ToJSON() string { + b, _ := json.Marshal(contentSource) + return string(b) +} + +// MessagesChat struct. +type MessagesChat struct { + AdminID int `json:"admin_id"` // Chat creator ID + ID int `json:"id"` // Chat ID + IsDefaultPhoto BaseBoolInt `json:"is_default_photo"` + Photo100 string `json:"photo_100"` // URL of the preview image with 100 px in width + Photo200 string `json:"photo_200"` // URL of the preview image with 200 px in width + Photo50 string `json:"photo_50"` // URL of the preview image with 50 px in width + Title string `json:"title"` // Chat title + Type string `json:"type"` // Chat type + Users []int `json:"users"` + MembersCount int `json:"members_count"` +} + +// MessagesChatPreview struct. +type MessagesChatPreview struct { + AdminID int `json:"admin_id"` + MembersCount int `json:"members_count"` + Members []int `json:"members"` + Title string `json:"title"` + Photo MessagesChatSettingsPhoto `json:"photo"` + LocalID int `json:"local_id"` + Joined bool `json:"joined"` + ChatSettings MessagesConversationChatSettings `json:"chat_settings"` +} + +// MessagesChatPushSettings struct. +type MessagesChatPushSettings struct { + DisabledUntil int `json:"disabled_until"` // Time until that notifications are disabled + Sound BaseBoolInt `json:"sound"` // Information whether the sound is on +} + +// MessagesChatSettingsPhoto struct. +type MessagesChatSettingsPhoto struct { + Photo100 string `json:"photo_100"` + Photo200 string `json:"photo_200"` + Photo50 string `json:"photo_50"` + IsDefaultPhoto BaseBoolInt `json:"is_default_photo"` +} + +// MessagesConversation struct. +type MessagesConversation struct { + CanWrite MessagesConversationCanWrite `json:"can_write"` + ChatSettings MessagesConversationChatSettings `json:"chat_settings"` + InRead int `json:"in_read"` // Last message user have read + LastMessageID int `json:"last_message_id"` // ID of the last message in conversation + Mentions []int `json:"mentions"` // IDs of messages with mentions + MessageRequest string `json:"message_request"` + + // Last outcoming message have been read by the opponent. + OutRead int `json:"out_read"` + Peer MessagesConversationPeer `json:"peer"` + PushSettings MessagesConversationPushSettings `json:"push_settings"` + Important BaseBoolInt `json:"important"` + Unanswered BaseBoolInt `json:"unanswered"` + IsMarkedUnread BaseBoolInt `json:"is_marked_unread"` + UnreadCount int `json:"unread_count"` // Unread messages number + CurrentKeyboard MessagesKeyboard `json:"current_keyboard"` + SortID struct { + MajorID int `json:"major_id"` + MinorID int `json:"minor_id"` + } `json:"sort_id"` +} + +// MessagesConversationCanWrite struct. +type MessagesConversationCanWrite struct { + Allowed BaseBoolInt `json:"allowed"` + Reason int `json:"reason"` +} + +// MessagesConversationChatSettings struct. +type MessagesConversationChatSettings struct { + MembersCount int `json:"members_count"` + Photo MessagesChatSettingsPhoto `json:"photo"` + PinnedMessage MessagesPinnedMessage `json:"pinned_message"` + State string `json:"state"` + Title string `json:"title"` + ActiveIDs []int `json:"active_ids"` + ACL struct { + CanInvite BaseBoolInt `json:"can_invite"` + CanChangeInfo BaseBoolInt `json:"can_change_info"` + CanChangePin BaseBoolInt `json:"can_change_pin"` + CanPromoteUsers BaseBoolInt `json:"can_promote_users"` + CanSeeInviteLink BaseBoolInt `json:"can_see_invite_link"` + CanChangeInviteLink BaseBoolInt `json:"can_change_invite_link"` + CanCopyChat BaseBoolInt `json:"can_copy_chat"` + CanModerate BaseBoolInt `json:"can_moderate"` + CanCall BaseBoolInt `json:"can_call"` + CanUseMassMentions BaseBoolInt `json:"can_use_mass_mentions"` + CanChangeServiceType BaseBoolInt `json:"can_change_service_type"` + } `json:"acl"` + IsGroupChannel BaseBoolInt `json:"is_group_channel"` + IsDisappearing BaseBoolInt `json:"is_disappearing"` + IsService BaseBoolInt `json:"is_service"` + IsCreatedForCall BaseBoolInt `json:"is_created_for_call"` + OwnerID int `json:"owner_id"` + AdminIDs []int `json:"admin_ids"` + Permissions MessagesChatPermissions `json:"permissions"` +} + +// MessagesChatPermission struct. +type MessagesChatPermission string + +// Possible values. +const ( + OwnerChatPermission MessagesChatPermission = "owner" + OwnerAndAdminsChatPermission MessagesChatPermission = "owner_and_admins" + AllChatPermission MessagesChatPermission = "all" +) + +// MessagesChatPermissions struct. +type MessagesChatPermissions struct { + Invite MessagesChatPermission `json:"invite"` + ChangeInfo MessagesChatPermission `json:"change_info"` + ChangePin MessagesChatPermission `json:"change_pin"` + UseMassMentions MessagesChatPermission `json:"use_mass_mentions"` + SeeInviteLink MessagesChatPermission `json:"see_invite_link"` + Call MessagesChatPermission `json:"call"` + ChangeAdmins MessagesChatPermission `json:"change_admins"` +} + +// MessagesConversationPeer struct. +type MessagesConversationPeer struct { + ID int `json:"id"` + LocalID int `json:"local_id"` + Type string `json:"type"` +} + +// MessagesConversationPushSettings struct. +type MessagesConversationPushSettings struct { + DisabledUntil int `json:"disabled_until"` + DisabledForever BaseBoolInt `json:"disabled_forever"` + NoSound BaseBoolInt `json:"no_sound"` +} + +// MessagesConversationWithMessage struct. +type MessagesConversationWithMessage struct { + Conversation MessagesConversation `json:"conversation"` + // BUG(VK): https://vk.com/bug229134 + LastMessage MessagesMessage `json:"last_message"` +} + +// MessagesDialog struct. +type MessagesDialog struct { + Important int `json:"important"` + InRead int `json:"in_read"` + Message MessagesMessage `json:"message"` + OutRead int `json:"out_read"` + Unanswered int `json:"unanswered"` + Unread int `json:"unread"` +} + +// MessagesHistoryAttachment struct. +type MessagesHistoryAttachment struct { + Attachment MessagesHistoryMessageAttachment `json:"attachment"` + MessageID int `json:"message_id"` // Message ID + FromID int `json:"from_id"` +} + +// MessagesHistoryMessageAttachment struct. +type MessagesHistoryMessageAttachment struct { + Audio AudioAudio `json:"audio"` + Doc DocsDoc `json:"doc"` + Link BaseLink `json:"link"` + Market BaseLink `json:"market"` + Photo PhotosPhoto `json:"photo"` + Share BaseLink `json:"share"` + Type string `json:"type"` + Video VideoVideo `json:"video"` + Wall BaseLink `json:"wall"` +} + +// MessagesLastActivity struct. +type MessagesLastActivity struct { + Online BaseBoolInt `json:"online"` // Information whether user is online + Time int `json:"time"` // Time when user was online in Unixtime +} + +// MessagesLongPollParams struct. +type MessagesLongPollParams struct { + Key string `json:"key"` // Key + Pts int `json:"pts"` // Persistent timestamp + Server string `json:"server"` // Server URL + Ts int `json:"ts"` // Timestamp +} + +// MessagesMessageAction status. +const ( + ChatPhotoUpdate = "chat_photo_update" + ChatPhotoRemove = "chat_photo_remove" + ChatCreate = "chat_create" + ChatTitleUpdate = "chat_title_update" + ChatInviteUser = "chat_invite_user" + ChatKickUser = "chat_kick_user" + ChatPinMessage = "chat_pin_message" + ChatUnpinMessage = "chat_unpin_message" + ChatInviteUserByLink = "chat_invite_user_by_link" + AcceptedMessageRequest = "accepted_message_request" +) + +// MessagesMessageAction struct. +type MessagesMessageAction struct { + ConversationMessageID int `json:"conversation_message_id"` // Message ID + + // Email address for chat_invite_user or chat_kick_user actions. + Email string `json:"email"` + MemberID int `json:"member_id"` // User or email peer ID + Message string `json:"message"` // Message body of related message + Photo MessagesMessageActionPhoto `json:"photo"` + + // New chat title for chat_create and chat_title_update actions. + Text string `json:"text"` + Type string `json:"type"` +} + +// MessagesMessageActionPhoto struct. +type MessagesMessageActionPhoto struct { + Photo100 string `json:"photo_100"` // URL of the preview image with 100px in width + Photo200 string `json:"photo_200"` // URL of the preview image with 200px in width + Photo50 string `json:"photo_50"` // URL of the preview image with 50px in width +} + +// MessagesMessageAttachment struct. +type MessagesMessageAttachment struct { + Audio AudioAudio `json:"audio"` + Doc DocsDoc `json:"doc"` + Gift GiftsLayout `json:"gift"` + Link BaseLink `json:"link"` + Market MarketMarketItem `json:"market"` + MarketMarketAlbum MarketMarketAlbum `json:"market_market_album"` + Photo PhotosPhoto `json:"photo"` + Sticker BaseSticker `json:"sticker"` + Type string `json:"type"` + Video VideoVideo `json:"video"` + Wall WallWallpost `json:"wall"` + WallReply WallWallComment `json:"wall_reply"` + AudioMessage DocsDoc `json:"audio_message"` + Graffiti DocsDoc `json:"graffiti"` + Poll PollsPoll `json:"poll"` + Call MessageCall `json:"call"` + Story StoriesStory `json:"story"` + Podcast PodcastsEpisode `json:"podcast"` +} + +// State in which call ended up. +// +// TODO: v3 type CallEndState. +const ( + CallEndStateCanceledByInitiator = "canceled_by_initiator" + CallEndStateCanceledByReceiver = "canceled_by_receiver" + CallEndStateReached = "reached" +) + +// MessageCall struct. +type MessageCall struct { + InitiatorID int `json:"initiator_id"` + ReceiverID int `json:"receiver_id"` + State string `json:"state"` + Time int `json:"time"` + Duration int `json:"duration"` + Video BaseBoolInt `json:"video"` +} + +// MessagesPinnedMessage struct. +type MessagesPinnedMessage struct { + Attachments []MessagesMessageAttachment `json:"attachments"` + + // Unique auto-incremented number for all Messages with this peer. + ConversationMessageID int `json:"conversation_message_id"` + + // Date when the message has been sent in Unixtime. + Date int `json:"date"` + + // Message author's ID. + FromID int `json:"from_id"` + FwdMessages []*MessagesMessage `json:"fwd_Messages"` + Geo BaseMessageGeo `json:"geo"` + ID int `json:"id"` // Message ID + PeerID int `json:"peer_id"` // Peer ID + ReplyMessage *MessagesMessage `json:"reply_message"` + Text string `json:"text"` // Message text +} + +// MessagesUserXtrInvitedBy struct. +type MessagesUserXtrInvitedBy struct { +} + +// MessagesForward struct. +type MessagesForward struct { + // Message owner. It is worth passing it on if you want to forward messages + // from the community to a dialog. + OwnerID int `json:"owner_id,omitempty"` + + // Identifier of the place from which the messages are to be sent. + PeerID int `json:"peer_id,omitempty"` + + // Messages can be passed to conversation_message_ids array: + // + // - that are in a personal dialog with the bot; + // + // - which are outbound messages from the bot; + // + // - written after the bot has entered the conversation. + ConversationMessageIDs []int `json:"conversation_message_ids,omitempty"` + MessageIDs []int `json:"message_ids,omitempty"` + + // Reply to messages. It is worth passing if you want to reply to messages + // in the chat room where the messages are. In this case there should be + // only one element in the conversation_message_ids/message_ids. + IsReply bool `json:"is_reply,omitempty"` +} + +// ToJSON returns the JSON encoding of MessagesForward. +func (forward MessagesForward) ToJSON() string { + b, _ := json.Marshal(forward) + return string(b) +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/newsfeed.go b/vendor/github.com/SevereCloud/vksdk/v2/object/newsfeed.go new file mode 100644 index 00000000..e9bda35a --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/newsfeed.go @@ -0,0 +1,187 @@ +package object // import "github.com/SevereCloud/vksdk/v2/object" + +// NewsfeedEventActivity struct. +type NewsfeedEventActivity struct { + Address string `json:"address"` // address of event + ButtonText string `json:"button_text"` // text of attach + Friends []int `json:"friends"` // array of friends ids + MemberStatus int `json:"member_status"` // Current user's member status + Text string `json:"text"` // text of attach + Time int `json:"time"` // event start time +} + +// NewsfeedItemAudio struct. +type NewsfeedItemAudio struct { + Audio NewsfeedItemAudioAudio `json:"audio"` +} + +// NewsfeedItemAudioAudio struct. +type NewsfeedItemAudioAudio struct { + Count int `json:"count"` // Audios number + Items []AudioAudio `json:"items"` +} + +// NewsfeedItemDigest struct. +type NewsfeedItemDigest struct { + ButtonText string `json:"button_text"` + FeedID string `json:"feed_id"` // id of feed in digest + Items []WallWallpost `json:"items"` + MainPostIDs []string `json:"main_post_ids"` + Template string `json:"template"` // type of digest + Title string `json:"title"` + TrackCode string `json:"track_code"` + // Type string `json:"type"` +} + +// NewsfeedItemFriend struct. +type NewsfeedItemFriend struct { + Friends NewsfeedItemFriendFriends `json:"friends"` +} + +// NewsfeedItemFriendFriends struct. +type NewsfeedItemFriendFriends struct { + Count int `json:"count"` // Number of friends has been added + Items []BaseUserID `json:"items"` +} + +// NewsfeedItemNote struct. +type NewsfeedItemNote struct { + Notes NewsfeedItemNoteNotes `json:"notes"` +} + +// NewsfeedItemNoteNotes struct. +type NewsfeedItemNoteNotes struct { + Count int `json:"count"` // Notes number + Items []NewsfeedNewsfeedNote `json:"items"` +} + +// NewsfeedItemPhoto struct. +type NewsfeedItemPhoto struct { + Photos NewsfeedItemPhotoPhotos `json:"photos"` +} + +// NewsfeedItemPhotoPhotos struct. +type NewsfeedItemPhotoPhotos struct { + Count int `json:"count"` // Photos number + Items []PhotosPhotoFull `json:"items"` +} + +// NewsfeedItemPhotoTag struct. +type NewsfeedItemPhotoTag struct { + PhotoTags NewsfeedItemPhotoTagPhotoTags `json:"photo_tags"` +} + +// NewsfeedItemPhotoTagPhotoTags struct. +type NewsfeedItemPhotoTagPhotoTags struct { + Count int `json:"count"` // Tags number + Items []PhotosPhotoFull `json:"items"` +} + +// NewsfeedItemStoriesBlock struct. +type NewsfeedItemStoriesBlock struct { + BlockType string `json:"block_type"` + Stories []StoriesStory `json:"stories"` + // Title string `json:"title"` + // TrackCode string `json:"track_code"` + // Type string `json:"type"` +} + +// NewsfeedItemTopic struct. +type NewsfeedItemTopic struct { + // Comments BaseCommentsInfo `json:"comments"` + // Likes BaseLikesInfo `json:"likes"` + // Text string `json:"text"` // Post text +} + +// NewsfeedItemVideo struct. +type NewsfeedItemVideo struct { + Video NewsfeedItemVideoVideo `json:"video"` +} + +// NewsfeedItemVideoVideo struct. +type NewsfeedItemVideoVideo struct { + Count int `json:"count"` // Tags number + Items []VideoVideo `json:"items"` +} + +// NewsfeedItemWallpost struct. +type NewsfeedItemWallpost struct { + Activity NewsfeedEventActivity `json:"activity"` + Attachments []WallWallpostAttachment `json:"attachments"` + Comments BaseCommentsInfo `json:"comments"` + FromID int `json:"from_id"` + CopyHistory []WallWallpost `json:"copy_history"` + Geo BaseGeo `json:"geo"` + Likes BaseLikesInfo `json:"likes"` + PostSource WallPostSource `json:"post_source"` + PostType string `json:"post_type"` + Reposts BaseRepostsInfo `json:"reposts"` + MarkedAsAds int `json:"marked_as_ads,omitempty"` + Views interface{} `json:"views,omitempty"` // BUG: Views int or wallViews + IsFavorite BaseBoolInt `json:"is_favorite,omitempty"` + CanDelete BaseBoolInt `json:"can_delete"` + CanArchive BaseBoolInt `json:"can_archive"` + IsArchived BaseBoolInt `json:"is_archived"` + SignerID int `json:"signer_id,omitempty"` + Text string `json:"text"` // Post text + Copyright WallPostCopyright `json:"copyright"` + CategoryAction NewsfeedCategoryAction `json:"category_action"` +} + +// NewsfeedCategoryAction struct. +type NewsfeedCategoryAction struct { + Action struct { + Target string `json:"target"` + Type string `json:"type"` + URL string `json:"url"` + } `json:"action"` + Name string `json:"name"` +} + +// NewsfeedList struct. +type NewsfeedList struct { + ID int `json:"id"` // List ID + Title string `json:"title"` // List title +} + +// NewsfeedItemMarket struct. +type NewsfeedItemMarket struct { + MarketMarketItem +} + +// NewsfeedNewsfeedItem struct. +type NewsfeedNewsfeedItem struct { + Type string `json:"type"` + SourceID int `json:"source_id"` + Date int `json:"date"` + TopicID int `json:"topic_id"` + + PostID int `json:"post_id,omitempty"` + + NewsfeedItemWallpost + NewsfeedItemPhoto + NewsfeedItemPhotoTag + NewsfeedItemFriend + NewsfeedItemNote + NewsfeedItemAudio + NewsfeedItemTopic + NewsfeedItemVideo + NewsfeedItemDigest + NewsfeedItemStoriesBlock + NewsfeedItemMarket + + CreatedBy int `json:"created_by,omitempty"` + CanEdit BaseBoolInt `json:"can_edit,omitempty"` + CanDelete BaseBoolInt `json:"can_delete,omitempty"` + CanDoubtCategory BaseBoolInt `json:"can_doubt_category"` + CanSetCategory BaseBoolInt `json:"can_set_category"` + // TODO: Need more fields +} + +// NewsfeedNewsfeedNote struct. +type NewsfeedNewsfeedNote struct { + Comments int `json:"comments"` // Comments Number + ID int `json:"id"` // Note ID + OwnerID int `json:"owner_id"` // integer + Title string `json:"title"` // Note title +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/notes.go b/vendor/github.com/SevereCloud/vksdk/v2/object/notes.go new file mode 100644 index 00000000..c238256e --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/notes.go @@ -0,0 +1,37 @@ +package object // import "github.com/SevereCloud/vksdk/v2/object" + +import ( + "fmt" +) + +// NotesNote struct. +type NotesNote struct { + CanComment BaseBoolInt `json:"can_comment"` // Information whether current user can comment the note + Comments int `json:"comments"` // Comments number + Date int `json:"date"` // Date when the note has been created in Unixtime + ID int `json:"id"` // Note ID + OwnerID int `json:"owner_id"` // Note owner's ID + Text string `json:"text"` // Note text + TextWiki string `json:"text_wiki"` // Note text in wiki format + Title string `json:"title"` // Note title + ViewURL string `json:"view_url"` // URL of the page with note preview + ReadComments int `json:"read_comments"` + PrivacyView []interface{} `json:"privacy_view"` // NOTE: old type privacy + PrivacyComment []interface{} `json:"privacy_comment"` // NOTE: old type privacy +} + +// ToAttachment return attachment format. +func (note NotesNote) ToAttachment() string { + return fmt.Sprintf("note%d_%d", note.OwnerID, note.ID) +} + +// NotesNoteComment struct. +type NotesNoteComment struct { + Date int `json:"date"` // Date when the comment has been added in Unixtime + ID int `json:"id"` // Comment ID + Message string `json:"message"` // Comment text + NID int `json:"nid"` // Note ID + OID int `json:"oid"` // Note ID + ReplyTo int `json:"reply_to"` // ID of replied comment + UID int `json:"uid"` // Comment author's ID +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/notifications.go b/vendor/github.com/SevereCloud/vksdk/v2/object/notifications.go new file mode 100644 index 00000000..119c3f9f --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/notifications.go @@ -0,0 +1,42 @@ +package object // import "github.com/SevereCloud/vksdk/v2/object" + +import "encoding/json" + +// NotificationsFeedback struct. +type NotificationsFeedback struct { + Attachments []WallWallpostAttachment `json:"attachments"` + FromID int `json:"from_id"` // Reply author's ID + Geo BaseGeo `json:"geo"` + ID int `json:"id"` // Item ID + Likes BaseLikesInfo `json:"likes"` + Text string `json:"text"` // Reply text + ToID int `json:"to_id"` // Wall owner's ID +} + +// NotificationsNotification struct. +type NotificationsNotification struct { + Date int `json:"date"` // Date when the event has been occurred + Feedback json.RawMessage `json:"feedback"` + Parent json.RawMessage `json:"parent"` + Reply NotificationsReply `json:"reply"` + Type string `json:"type"` // Notification type +} + +// NotificationsNotificationsComment struct. +type NotificationsNotificationsComment struct { + Date int `json:"date"` // Date when the comment has been added in Unixtime + ID int `json:"id"` // Comment ID + OwnerID int `json:"owner_id"` // Author ID + Photo PhotosPhoto `json:"photo"` + Post WallWallpost `json:"post"` + Text string `json:"text"` // Comment text + Topic BoardTopic `json:"topic"` + Video VideoVideo `json:"video"` +} + +// NotificationsReply struct. +type NotificationsReply struct { + Date string `json:"date"` // Date when the reply has been created in Unixtime + ID int `json:"id"` // Reply ID + Text string `json:"text"` // Reply text +} 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" +) diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/orders.go b/vendor/github.com/SevereCloud/vksdk/v2/object/orders.go new file mode 100644 index 00000000..0d29dfb5 --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/orders.go @@ -0,0 +1,45 @@ +package object // import "github.com/SevereCloud/vksdk/v2/object" + +// OrdersAmount struct. +type OrdersAmount struct { + Amounts []OrdersAmountItem `json:"amounts"` + Currency string `json:"currency"` // Currency name +} + +// OrdersAmountItem struct. +type OrdersAmountItem struct { + Amount int `json:"amount"` // Votes amount in user's currency + Description string `json:"description"` // Amount description + Votes string `json:"votes"` // Votes number +} + +// OrdersOrder struct. +type OrdersOrder struct { + Amount int `json:"amount"` // Amount + AppOrderID int `json:"app_order_id"` // App order ID + CancelTransactionID int `json:"cancel_transaction_id"` // Cancel transaction ID + Date int `json:"date"` // Date of creation in Unixtime + ID int `json:"id"` // Order ID + Item string `json:"item"` // Order item + ReceiverID int `json:"receiver_id"` // Receiver ID + Status string `json:"status"` // Order status + TransactionID int `json:"transaction_id"` // Transaction ID + UserID int `json:"user_id"` // User ID +} + +// OrdersSubscription struct. +type OrdersSubscription struct { + CancelReason string `json:"cancel_reason"` // Cancel reason + CreateTime int `json:"create_time"` // Date of creation in Unixtime + ID int `json:"id"` // Subscription ID + ItemID string `json:"item_id"` // Subscription order item + NextBillTime int `json:"next_bill_time"` // Date of next bill in Unixtime + Period int `json:"period"` // Subscription period + PeriodStartTime int `json:"period_start_time"` // Date of last period start in Unixtime + Price int `json:"price"` // Subscription price + Status string `json:"status"` // Subscription status + PendingCancel BaseBoolInt `json:"pending_cancel"` // Pending cancel state + TestMode BaseBoolInt `json:"test_mode"` // Is test subscription + TrialExpireTime int `json:"trial_expire_time"` // Date of trial expire in Unixtime + UpdateTime int `json:"update_time"` // Date of last change in Unixtime +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/pages.go b/vendor/github.com/SevereCloud/vksdk/v2/object/pages.go new file mode 100644 index 00000000..616830cc --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/pages.go @@ -0,0 +1,85 @@ +package object // import "github.com/SevereCloud/vksdk/v2/object" + +// Pages privacy settings. +const ( + PagesPrivacyCommunityManagers = iota // community managers only + PagesPrivacyCommunityMembers // community members only + PagesPrivacyEveryone // everyone +) + +// PagesWikipage struct. +type PagesWikipage struct { + CreatorID int `json:"creator_id"` // Page creator ID + CreatorName int `json:"creator_name"` // Page creator name + EditorID int `json:"editor_id"` // Last editor ID + EditorName string `json:"editor_name"` // Last editor name + GroupID int `json:"group_id"` // Community ID + ID int `json:"id"` // Page ID + Title string `json:"title"` // Page title + Views int `json:"views"` // Views number + WhoCanEdit int `json:"who_can_edit"` // Edit settings of the page + WhoCanView int `json:"who_can_view"` // View settings of the page +} + +// PagesWikipageFull struct. +type PagesWikipageFull struct { + // Date when the page has been created in Unixtime. + Created int `json:"created"` + + // Page creator ID. + CreatorID int `json:"creator_id"` + + // Information whether current user can edit the page. + CurrentUserCanEdit BaseBoolInt `json:"current_user_can_edit"` + + // Information whether current user can edit the page access settings. + CurrentUserCanEditAccess BaseBoolInt `json:"current_user_can_edit_access"` + + // Date when the page has been edited in Unixtime. + Edited int `json:"edited"` + + // Last editor ID. + EditorID int `json:"editor_id"` + + // Page ID. + PageID int `json:"page_id"` + + // Community ID. + GroupID int `json:"group_id"` + + // Page content, HTML. + HTML string `json:"html"` + + // Page ID. + ID int `json:"id"` + + // Page content, wiki. + Source string `json:"source"` + + // Page title. + Title string `json:"title"` + + // URL of the page preview. + ViewURL string `json:"view_url"` + + // Views number. + Views int `json:"views"` + + // Edit settings of the page. + WhoCanEdit int `json:"who_can_edit"` + + // View settings of the page. + WhoCanView int `json:"who_can_view"` + VersionCreated int `json:"version_created"` +} + +// PagesWikipageHistory struct. +// +// BUG(VK): https://vk.com/dev/pages.getHistory edited and date. +type PagesWikipageHistory struct { + Date int `json:"date"` // Date when the page has been edited in Unixtime + EditorID int `json:"editor_id"` // Last editor ID + EditorName string `json:"editor_name"` // Last editor name + ID int `json:"id"` // Version ID + Length int `json:"length"` // Page size in bytes +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/photos.go b/vendor/github.com/SevereCloud/vksdk/v2/object/photos.go new file mode 100644 index 00000000..5adfcae8 --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/photos.go @@ -0,0 +1,339 @@ +package object // import "github.com/SevereCloud/vksdk/v2/object" + +import ( + "fmt" +) + +// PhotosPhoto struct. +type PhotosPhoto struct { + AccessKey string `json:"access_key"` // Access key for the photo + AlbumID int `json:"album_id"` // Album ID + Date int `json:"date"` // Date when uploaded + Height int `json:"height"` // Original photo height + ID int `json:"id"` // Photo ID + Images []PhotosImage `json:"images"` + Lat float64 `json:"lat"` // Latitude + Long float64 `json:"long"` // Longitude + OwnerID int `json:"owner_id"` // Photo owner's ID + PostID int `json:"post_id"` // Post ID + Text string `json:"text"` // Photo caption + UserID int `json:"user_id"` // ID of the user who have uploaded the photo + Width int `json:"width"` // Original photo width + CanUpload BaseBoolInt `json:"can_upload"` + CommentsDisabled BaseBoolInt `json:"comments_disabled"` + ThumbIsLast BaseBoolInt `json:"thumb_is_last"` + UploadByAdminsOnly BaseBoolInt `json:"upload_by_admins_only"` + HasTags BaseBoolInt `json:"has_tags"` + Created int `json:"created"` + Description string `json:"description"` + PrivacyComment []string `json:"privacy_comment"` + PrivacyView []string `json:"privacy_view"` + Size int `json:"size"` + Sizes []PhotosPhotoSizes `json:"sizes"` + ThumbID int `json:"thumb_id"` + ThumbSrc string `json:"thumb_src"` + Title string `json:"title"` + Updated int `json:"updated"` + Color string `json:"color"` +} + +// ToAttachment return attachment format. +func (photo PhotosPhoto) ToAttachment() string { + return fmt.Sprintf("photo%d_%d", photo.OwnerID, photo.ID) +} + +// MaxSize return the largest PhotosPhotoSizes. +func (photo PhotosPhoto) MaxSize() (maxPhotoSize PhotosPhotoSizes) { + var max float64 + + for _, photoSize := range photo.Sizes { + size := photoSize.Height * photoSize.Width + if size > max { + max = size + maxPhotoSize = photoSize + } + } + + return +} + +// MinSize return the smallest PhotosPhotoSizes. +func (photo PhotosPhoto) MinSize() (minPhotoSize PhotosPhotoSizes) { + var min float64 + + for _, photoSize := range photo.Sizes { + size := photoSize.Height * photoSize.Width + if size < min || min == 0 { + min = size + minPhotoSize = photoSize + } + } + + return +} + +// PhotosCommentXtrPid struct. +type PhotosCommentXtrPid struct { + Attachments []WallCommentAttachment `json:"attachments"` + Date int `json:"date"` // Date when the comment has been added in Unixtime + FromID int `json:"from_id"` // Author ID + ID int `json:"id"` // Comment ID + Likes BaseLikesInfo `json:"likes"` + ParentsStack []int `json:"parents_stack"` + Pid int `json:"pid"` // Photo ID + ReplyToComment int `json:"reply_to_comment"` // Replied comment ID + ReplyToUser int `json:"reply_to_user"` // Replied user ID + Text string `json:"text"` // Comment text + Thread WallWallCommentThread `json:"thread"` +} + +// PhotosImage struct. +type PhotosImage struct { + BaseImage + Type string `json:"type"` +} + +// PhotosChatUploadResponse struct. +type PhotosChatUploadResponse struct { + Response string `json:"response"` // Uploaded photo data +} + +// PhotosMarketAlbumUploadResponse struct. +type PhotosMarketAlbumUploadResponse struct { + GID int `json:"gid"` // Community ID + Hash string `json:"hash"` // Uploading hash + Photo string `json:"photo"` // Uploaded photo data + Server int `json:"server"` // Upload server number +} + +// PhotosMarketUploadResponse struct. +type PhotosMarketUploadResponse struct { + CropData string `json:"crop_data"` // Crop data + CropHash string `json:"crop_hash"` // Crop hash + GroupID int `json:"group_id"` // Community ID + Hash string `json:"hash"` // Uploading hash + Photo string `json:"photo"` // Uploaded photo data + Server int `json:"server"` // Upload server number +} + +// PhotosMessageUploadResponse struct. +type PhotosMessageUploadResponse struct { + Hash string `json:"hash"` // Uploading hash + Photo string `json:"photo"` // Uploaded photo data + Server int `json:"server"` // Upload server number +} + +// PhotosOwnerUploadResponse struct. +type PhotosOwnerUploadResponse struct { + Hash string `json:"hash"` // Uploading hash + Photo string `json:"photo"` // Uploaded photo data + Server int `json:"server"` // Upload server number +} + +// PhotosPhotoAlbum struct. +type PhotosPhotoAlbum struct { + Created int `json:"created"` // Date when the album has been created in Unixtime + Description string `json:"description"` // Photo album description + ID string `json:"id"` // BUG(VK): Photo album ID + OwnerID int `json:"owner_id"` // Album owner's ID + Size int `json:"size"` // Photos number + Thumb PhotosPhoto `json:"thumb"` + Title string `json:"title"` // Photo album title + Updated int `json:"updated"` // Date when the album has been updated last time in Unixtime +} + +// ToAttachment return attachment format. +func (album PhotosPhotoAlbum) ToAttachment() string { + return fmt.Sprintf("album%d_%s", album.OwnerID, album.ID) +} + +// PhotosPhotoAlbumFull struct. +type PhotosPhotoAlbumFull struct { + // Information whether current user can upload photo to the album. + CanUpload BaseBoolInt `json:"can_upload"` + CommentsDisabled BaseBoolInt `json:"comments_disabled"` // Information whether album comments are disabled + Created int `json:"created"` // Date when the album has been created in Unixtime + Description string `json:"description"` // Photo album description + ID int `json:"id"` // Photo album ID + OwnerID int `json:"owner_id"` // Album owner's ID + Size int `json:"size"` // Photos number + PrivacyComment Privacy `json:"privacy_comment"` + PrivacyView Privacy `json:"privacy_view"` + Sizes []PhotosPhotoSizes `json:"sizes"` + ThumbID int `json:"thumb_id"` // Thumb photo ID + + // Information whether the album thumb is last photo. + ThumbIsLast int `json:"thumb_is_last"` + ThumbSrc string `json:"thumb_src"` // URL of the thumb image + Title string `json:"title"` // Photo album title + + // Date when the album has been updated last time in Unixtime. + Updated int `json:"updated"` + + // Information whether only community administrators can upload photos. + UploadByAdminsOnly int `json:"upload_by_admins_only"` +} + +// ToAttachment return attachment format. +func (album PhotosPhotoAlbumFull) ToAttachment() string { + return fmt.Sprintf("album%d_%d", album.OwnerID, album.ID) +} + +// MaxSize return the largest PhotosPhotoSizes. +func (album PhotosPhotoAlbumFull) MaxSize() (maxPhotoSize PhotosPhotoSizes) { + var max float64 + + for _, photoSize := range album.Sizes { + size := photoSize.Height * photoSize.Width + if size > max { + max = size + maxPhotoSize = photoSize + } + } + + return +} + +// MinSize return the smallest PhotosPhotoSizes. +func (album PhotosPhotoAlbumFull) MinSize() (minPhotoSize PhotosPhotoSizes) { + var min float64 + + for _, photoSize := range album.Sizes { + size := photoSize.Height * photoSize.Width + if size < min || min == 0 { + min = size + minPhotoSize = photoSize + } + } + + return +} + +// PhotosPhotoFull struct. +type PhotosPhotoFull struct { + AccessKey string `json:"access_key"` // Access key for the photo + AlbumID int `json:"album_id"` // Album ID + CanComment BaseBoolInt `json:"can_comment"` // Information whether current user can comment the photo + CanRepost BaseBoolInt `json:"can_repost"` // Information whether current user can repost the photo + HasTags BaseBoolInt `json:"has_tags"` + Comments BaseObjectCount `json:"comments"` + Date int `json:"date"` // Date when uploaded + Height int `json:"height"` // Original photo height + ID int `json:"id"` // Photo ID + Images []PhotosImage `json:"images"` + Lat float64 `json:"lat"` // Latitude + Likes BaseLikes `json:"likes"` + Long float64 `json:"long"` // Longitude + OwnerID int `json:"owner_id"` // Photo owner's ID + PostID int `json:"post_id"` // Post ID + Reposts BaseRepostsInfo `json:"reposts"` + Tags BaseObjectCount `json:"tags"` + Text string `json:"text"` // Photo caption + UserID int `json:"user_id"` // ID of the user who have uploaded the photo + Width int `json:"width"` // Original photo width + Hidden int `json:"hidden"` // Returns if the photo is hidden above the wall + Photo75 string `json:"photo_75"` // URL of image with 75 px width + Photo130 string `json:"photo_130"` // URL of image with 130 px width + Photo604 string `json:"photo_604"` // URL of image with 604 px width + Photo807 string `json:"photo_807"` // URL of image with 807 px width + Photo1280 string `json:"photo_1280"` // URL of image with 1280 px width + Photo2560 string `json:"photo_2560"` // URL of image with 2560 px width + Sizes []PhotosPhotoSizes `json:"sizes"` +} + +// ToAttachment return attachment format. +func (photo PhotosPhotoFull) ToAttachment() string { + return fmt.Sprintf("photo%d_%d", photo.OwnerID, photo.ID) +} + +// MaxSize return the largest PhotosPhotoSizes. +func (photo PhotosPhotoFull) MaxSize() (maxPhotoSize PhotosPhotoSizes) { + var max float64 + + for _, photoSize := range photo.Sizes { + size := photoSize.Height * photoSize.Width + if size > max { + max = size + maxPhotoSize = photoSize + } + } + + return +} + +// MinSize return the smallest PhotosPhotoSizes. +func (photo PhotosPhotoFull) MinSize() (minPhotoSize PhotosPhotoSizes) { + var min float64 + + for _, photoSize := range photo.Sizes { + size := photoSize.Height * photoSize.Width + if size < min || min == 0 { + min = size + minPhotoSize = photoSize + } + } + + return +} + +// PhotosPhotoFullXtrRealOffset struct. +type PhotosPhotoFullXtrRealOffset struct { + PhotosPhotoFull + RealOffset int `json:"real_offset"` // Real position of the photo +} + +// PhotosPhotoSizes struct. +type PhotosPhotoSizes struct { + // BUG(VK): json: cannot unmarshal number 180.000000 into Go struct field PhotosPhotoSizes.height of type int + BaseImage +} + +// PhotosPhotoTag struct. +type PhotosPhotoTag struct { + Date int `json:"date"` // Date when tag has been added in Unixtime + ID int `json:"id"` // Tag ID + PlacerID int `json:"placer_id"` // ID of the tag creator + TaggedName string `json:"tagged_name"` // Tag description + Description string `json:"description"` // Tagged description. + UserID int `json:"user_id"` // Tagged user ID + Viewed BaseBoolInt `json:"viewed"` // Information whether the tag is reviewed + X float64 `json:"x"` // Coordinate X of the left upper corner + X2 float64 `json:"x2"` // Coordinate X of the right lower corner + Y float64 `json:"y"` // Coordinate Y of the left upper corner + Y2 float64 `json:"y2"` // Coordinate Y of the right lower corner +} + +// PhotosPhotoUpload struct. +type PhotosPhotoUpload struct { + AlbumID int `json:"album_id"` // Album ID + UploadURL string `json:"upload_url"` // URL to upload photo + UserID int `json:"user_id"` // User ID +} + +// PhotosPhotoUploadResponse struct. +type PhotosPhotoUploadResponse struct { + AID int `json:"aid"` // Album ID + Hash string `json:"hash"` // Uploading hash + PhotosList string `json:"photos_list"` // Uploaded photos data + Server int `json:"server"` // Upload server number +} + +// PhotosPhotoXtrRealOffset struct. +type PhotosPhotoXtrRealOffset struct { + PhotosPhoto + RealOffset int `json:"real_offset"` // Real position of the photo +} + +// PhotosPhotoXtrTagInfo struct. +type PhotosPhotoXtrTagInfo struct { + PhotosPhoto + TagCreated int `json:"tag_created"` // Date when tag has been added in Unixtime + TagID int `json:"tag_id"` // Tag ID +} + +// PhotosWallUploadResponse struct. +type PhotosWallUploadResponse struct { + Hash string `json:"hash"` // Uploading hash + Photo string `json:"photo"` // Uploaded photo data + Server int `json:"server"` // Upload server number +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/podcasts.go b/vendor/github.com/SevereCloud/vksdk/v2/object/podcasts.go new file mode 100644 index 00000000..a332da43 --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/podcasts.go @@ -0,0 +1,45 @@ +package object + +// PodcastsItem struct. +type PodcastsItem struct { + OwnerID int `json:"owner_id"` +} + +// PodcastsCategory struct. +type PodcastsCategory struct { + ID int `json:"id"` + Title string `json:"title"` + Cover []BaseImage `json:"cover"` +} + +// PodcastsEpisode struct. +type PodcastsEpisode struct { + ID int `json:"id"` + OwnerID int `json:"owner_id"` + Artist string `json:"artist"` + Title string `json:"title"` + Duration int `json:"duration"` + Date int `json:"date"` + URL string `json:"url"` + LyricsID int `json:"lyrics_id"` + NoSearch int `json:"no_search"` + TrackCode string `json:"track_code"` + IsHq BaseBoolInt `json:"is_hq"` + IsFocusTrack BaseBoolInt `json:"is_focus_track"` + IsExplicit BaseBoolInt `json:"is_explicit"` + ShortVideosAllowed BaseBoolInt `json:"short_videos_allowed"` + StoriesAllowed BaseBoolInt `json:"stories_allowed"` + StoriesCoverAllowed BaseBoolInt `json:"stories_cover_allowed"` + PodcastInfo PodcastsPodcastInfo `json:"podcast_info"` +} + +// PodcastsPodcastInfo struct. +type PodcastsPodcastInfo struct { + Cover struct { + Sizes []BaseImage `json:"cover"` + } + Plays int `json:"plays"` + IsFavorite BaseBoolInt `json:"is_favorite"` + Description string `json:"description"` + Position int `json:"position"` +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/polls.go b/vendor/github.com/SevereCloud/vksdk/v2/object/polls.go new file mode 100644 index 00000000..a2f69656 --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/polls.go @@ -0,0 +1,101 @@ +package object // import "github.com/SevereCloud/vksdk/v2/object" + +import ( + "fmt" +) + +// PollsAnswer struct. +type PollsAnswer struct { + ID int `json:"id"` + Rate float64 `json:"rate"` + Text string `json:"text"` + Votes int `json:"votes"` +} + +// PollsPoll struct. +type PollsPoll struct { + AnswerID int `json:"answer_id"` // Current user's answer ID + Answers []PollsAnswer `json:"answers"` + Created int `json:"created"` // Date when poll has been created in Unixtime + ID int `json:"id"` // Poll ID + OwnerID int `json:"owner_id"` // Poll owner's ID + Question string `json:"question"` // Poll question + Votes int `json:"votes"` // Votes number + AnswerIDs []int `json:"answer_ids"` + EndDate int `json:"end_date"` + Anonymous BaseBoolInt `json:"anonymous"` // Information whether the pole is anonymous + Closed BaseBoolInt `json:"closed"` + IsBoard BaseBoolInt `json:"is_board"` + CanEdit BaseBoolInt `json:"can_edit"` + CanVote BaseBoolInt `json:"can_vote"` + CanReport BaseBoolInt `json:"can_report"` + CanShare BaseBoolInt `json:"can_share"` + Multiple BaseBoolInt `json:"multiple"` + DisableUnvote BaseBoolInt `json:"disable_unvote"` + Photo PhotosPhoto `json:"photo"` + AuthorID int `json:"author_id"` + Background PollsBackground `json:"background"` + Friends []PollsFriend `json:"friends"` + Profiles []UsersUser `json:"profiles"` + Groups []GroupsGroup `json:"groups"` +} + +// ToAttachment return attachment format. +func (poll PollsPoll) ToAttachment() string { + return fmt.Sprintf("poll%d_%d", poll.OwnerID, poll.ID) +} + +// PollsFriend struct. +type PollsFriend struct { + ID int `json:"id"` +} + +// PollsVoters struct. +type PollsVoters struct { + AnswerID int `json:"answer_id"` // Answer ID + Users PollsVotersUsers `json:"users"` +} + +// PollsVotersUsers struct. +type PollsVotersUsers struct { + Count int `json:"count"` // Votes number + Items []int `json:"items"` +} + +// PollsVotersFields struct. +type PollsVotersFields struct { + AnswerID int `json:"answer_id"` // Answer ID + Users PollsVotersUsersFields `json:"users"` +} + +// PollsVotersUsersFields struct. +type PollsVotersUsersFields struct { + Count int `json:"count"` // Votes number + Items []UsersUser `json:"items"` +} + +// PollsBackground struct. +type PollsBackground struct { + Type string `json:"type"` + Angle int `json:"angle"` + Color string `json:"color"` + Points []struct { + Position float64 `json:"position"` + Color string `json:"color"` + } `json:"points"` + ID int `json:"id"` + Name string `json:"name"` +} + +// PollsPhoto struct. +type PollsPhoto struct { + ID int `json:"id"` + Color string `json:"color"` + Images []PhotosImage `json:"images"` +} + +// PollsPhotoUploadResponse struct. +type PollsPhotoUploadResponse struct { + Photo string `json:"photo"` // Uploaded photo data + Hash string `json:"hash"` // Uploaded hash +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/prettycards.go b/vendor/github.com/SevereCloud/vksdk/v2/object/prettycards.go new file mode 100644 index 00000000..4cb14a01 --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/prettycards.go @@ -0,0 +1,14 @@ +package object + +// PrettyCardsPrettyCard struct. +type PrettyCardsPrettyCard struct { + Button string `json:"button"` // Button key + ButtonText string `json:"button_text"` // Button text in current language + CardID string `json:"card_id"` // Card ID (long int returned as string) + Images []BaseImage `json:"images"` + LinkURL string `json:"link_url"` // Link URL + Photo string `json:"photo"` // Photo ID (format "<owner_id>_<media_id>") + Price string `json:"price"` // Price if set (decimal number returned as string) + PriceOld string `json:"price_old"` // Old price if set (decimal number returned as string) + Title string `json:"title"` // Title +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/search.go b/vendor/github.com/SevereCloud/vksdk/v2/object/search.go new file mode 100644 index 00000000..81b0e17a --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/search.go @@ -0,0 +1,11 @@ +package object + +// SearchHint struct. +type SearchHint struct { + Description string `json:"description"` // Object description + Global int `json:"global,omitempty"` // Information whether the object has been found globally + Group GroupsGroup `json:"group,omitempty"` + Profile UsersUser `json:"profile,omitempty"` + Section string `json:"section"` + Type string `json:"type"` +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/secure.go b/vendor/github.com/SevereCloud/vksdk/v2/object/secure.go new file mode 100644 index 00000000..5d64059f --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/secure.go @@ -0,0 +1,33 @@ +package object // import "github.com/SevereCloud/vksdk/v2/object" + +// SecureLevel struct. +type SecureLevel struct { + Level int `json:"level"` // Level + UID int `json:"uid"` // User ID +} + +// SecureSmsNotification struct. +type SecureSmsNotification struct { + AppID int `json:"app_id"` // Application ID + Date int `json:"date"` // Date when message has been sent in Unixtime + ID int `json:"id"` // Notification ID + Message string `json:"message"` // Message text + UserID int `json:"user_id"` // User ID +} + +// SecureTokenChecked struct. +type SecureTokenChecked struct { + Date int `json:"date"` // Date when access_token has been generated in Unixtime + Expire int `json:"expire"` // Date when access_token will expire in Unixtime + Success int `json:"success"` // Returns if successfully processed + UserID int `json:"user_id"` // User ID +} + +// SecureTransaction struct. +type SecureTransaction struct { + Date int `json:"date"` // Transaction date in Unixtime + ID int `json:"id"` // Transaction ID + UIDFrom int `json:"uid_from"` // From ID + UIDTo int `json:"uid_to"` // To ID + Votes int `json:"votes"` // Votes number +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/stats.go b/vendor/github.com/SevereCloud/vksdk/v2/object/stats.go new file mode 100644 index 00000000..b8fe5001 --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/stats.go @@ -0,0 +1,77 @@ +package object // import "github.com/SevereCloud/vksdk/v2/object" + +// StatsActivity struct. +type StatsActivity struct { + Comments int `json:"comments"` // Comments number + Copies int `json:"copies"` // Reposts number + Hidden int `json:"hidden"` // Hidden from news count + Likes int `json:"likes"` // Likes number + Subscribed int `json:"subscribed"` // New subscribers count + Unsubscribed int `json:"unsubscribed"` // Unsubscribed count +} + +// StatsCity struct. +type StatsCity struct { + Count int `json:"count"` // Visitors number + Name string `json:"name"` // City name + Value int `json:"value"` // City ID +} + +// StatsCountry struct. +type StatsCountry struct { + Code string `json:"code"` // Country code + Count int `json:"count"` // Visitors number + Name string `json:"name"` // Country name + Value int `json:"value"` // Country ID +} + +// StatsPeriod struct. +type StatsPeriod struct { + Activity StatsActivity `json:"activity"` + PeriodFrom int `json:"period_from"` // Unix timestamp + PeriodTo int `json:"period_to"` // Unix timestamp + Reach StatsReach `json:"reach"` + Visitors StatsViews `json:"visitors"` +} + +// StatsReach struct. +type StatsReach struct { + Age []StatsSexAge `json:"age"` + Cities []StatsCity `json:"cities"` + Countries []StatsCountry `json:"countries"` + MobileReach int `json:"mobile_reach"` // Reach count from mobile devices + Reach int `json:"reach"` // Reach count + ReachSubscribers int `json:"reach_subscribers"` // Subscribers reach count + Sex []StatsSexAge `json:"sex"` + SexAge []StatsSexAge `json:"sex_age"` +} + +// StatsSexAge struct. +type StatsSexAge struct { + Count int `json:"count"` // Visitors number + Value string `json:"value"` // Sex/age value +} + +// StatsViews struct. +type StatsViews struct { + Age []StatsSexAge `json:"age"` + Cities []StatsCity `json:"cities"` + Countries []StatsCountry `json:"countries"` + MobileViews int `json:"mobile_views"` // Number of views from mobile devices + Sex []StatsSexAge `json:"sex"` + SexAge []StatsSexAge `json:"sex_age"` + Views int `json:"views"` // Views number + Visitors int `json:"visitors"` // Visitors number +} + +// StatsWallpostStat struct. +type StatsWallpostStat struct { + Hide int `json:"hide"` // Hidings number + JoinGroup int `json:"join_group"` // People have joined the group + Links int `json:"links"` // Link click-through + ReachSubscribers int `json:"reach_subscribers"` // Subscribers reach + ReachTotal int `json:"reach_total"` // Total reach + Report int `json:"report"` // Reports number + ToGroup int `json:"to_group"` // Click-through to community + Unsubscribe int `json:"unsubscribe"` // Unsubscribed members +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/stories.go b/vendor/github.com/SevereCloud/vksdk/v2/object/stories.go new file mode 100644 index 00000000..8995e8d4 --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/stories.go @@ -0,0 +1,335 @@ +package object // import "github.com/SevereCloud/vksdk/v2/object" + +import ( + "encoding/json" +) + +// StoriesViewer struct. +type StoriesViewer struct { + IsLiked bool `json:"is_liked"` + UserID int `json:"user_id"` + + // For extended + User struct { + Type string `json:"type"` + ID int `json:"id"` + FirstName string `json:"first_name"` + LastName string `json:"last_name"` + IsClosed bool `json:"is_closed"` + CanAccessClosed bool `json:"can_access_closed"` + } `json:"user,omitempty"` +} + +// StoriesNarrativeInfo type. +type StoriesNarrativeInfo struct { + Author string `json:"author"` + Title string `json:"title"` + Views int `json:"views"` +} + +// StoriesPromoData struct. +type StoriesPromoData struct { + Name string `json:"name"` + Photo50 string `json:"photo_50"` + Photo100 string `json:"photo_100"` + NotAnimated BaseBoolInt `json:"not_animated"` +} + +// StoriesStoryLink struct. +type StoriesStoryLink struct { + Text string `json:"text"` // Link text + URL string `json:"url"` // Link URL +} + +// StoriesReplies struct. +type StoriesReplies struct { + Count int `json:"count"` // Replies number. + New int `json:"new"` // New replies number. +} + +// StoriesQuestions struct. +type StoriesQuestions struct { + Count int `json:"count"` // Replies number. + New int `json:"new"` // New replies number. +} + +// StoriesStoryStats struct. +type StoriesStoryStats struct { + Answer StoriesStoryStatsStat `json:"answer"` + Bans StoriesStoryStatsStat `json:"bans"` + OpenLink StoriesStoryStatsStat `json:"open_link"` + Replies StoriesStoryStatsStat `json:"replies"` + Shares StoriesStoryStatsStat `json:"shares"` + Subscribers StoriesStoryStatsStat `json:"subscribers"` + Views StoriesStoryStatsStat `json:"views"` + Likes StoriesStoryStatsStat `json:"likes"` +} + +// StoriesStoryStatsStat struct. +type StoriesStoryStatsStat struct { + Count int `json:"count"` // Stat value + State string `json:"state"` +} + +// StoriesStoryType story type. +type StoriesStoryType string + +// Possible values. +const ( + StoriesStoryPhoto StoriesStoryType = "photo" + StoriesStoryVideo StoriesStoryType = "video" + StoriesStoryLiveActive StoriesStoryType = "live_active" + StoriesStoryLiveFinished StoriesStoryType = "live_finished" + StoriesStoryBirthdayInvite StoriesStoryType = "birthday_invite" +) + +// StoriesStory struct. +type StoriesStory struct { + AccessKey string `json:"access_key"` // Access key for private object. + ExpiresAt int `json:"expires_at"` // Story expiration time. Unixtime. + CanHide BaseBoolInt `json:"can_hide"` + // Information whether story has question sticker and current user can send question to the author + CanAsk BaseBoolInt `json:"can_ask"` + // Information whether story has question sticker and current user can send anonymous question to the author + CanAskAnonymous BaseBoolInt `json:"can_ask_anonymous"` + + // Information whether current user can comment the story (0 - no, 1 - yes). + CanComment BaseBoolInt `json:"can_comment"` + + // Information whether current user can reply to the story + // (0 - no, 1 - yes). + CanReply BaseBoolInt `json:"can_reply"` + + // Information whether current user can see the story (0 - no, 1 - yes). + CanSee BaseBoolInt `json:"can_see"` + + // Information whether current user can share the story (0 - no, 1 - yes). + CanShare BaseBoolInt `json:"can_share"` + + // Information whether the story is deleted (false - no, true - yes). + IsDeleted BaseBoolInt `json:"is_deleted"` + + // Information whether the story is expired (false - no, true - yes). + IsExpired BaseBoolInt `json:"is_expired"` + + // Is video without sound + NoSound BaseBoolInt `json:"no_sound"` + + // Does author have stories privacy restrictions + IsRestricted BaseBoolInt `json:"is_restricted"` + + CanUseInNarrative BaseBoolInt `json:"can_use_in_narrative"` + + // Information whether current user has seen the story or not + // (0 - no, 1 - yes). + Seen BaseBoolInt `json:"seen"` + IsOwnerPinned BaseBoolInt `json:"is_owner_pinned"` + IsOneTime BaseBoolInt `json:"is_one_time"` + NeedMute BaseBoolInt `json:"need_mute"` + MuteReply BaseBoolInt `json:"mute_reply"` + CanLike BaseBoolInt `json:"can_like"` + Date int `json:"date"` // Date when story has been added in Unixtime. + ID int `json:"id"` // Story ID. + Link StoriesStoryLink `json:"link"` + OwnerID int `json:"owner_id"` // Story owner's ID. + ParentStory *StoriesStory `json:"parent_story"` + ParentStoryAccessKey string `json:"parent_story_access_key"` // Access key for private object. + ParentStoryID int `json:"parent_story_id"` // Parent story ID. + ParentStoryOwnerID int `json:"parent_story_owner_id"` // Parent story owner's ID. + Photo PhotosPhoto `json:"photo"` + Replies StoriesReplies `json:"replies"` // Replies to current story. + Type string `json:"type"` + Video VideoVideo `json:"video"` + Views int `json:"views"` // Views number. + ClickableStickers StoriesClickableStickers `json:"clickable_stickers"` + TrackCode string `json:"track_code"` + LikesCount int `json:"likes_count"` + NarrativeID int `json:"narrative_id"` + NarrativeOwnerID int `json:"narrative_owner_id"` + NarrativeInfo StoriesNarrativeInfo `json:"narrative_info"` + NarrativesCount int `json:"narratives_count"` + FirstNarrativeTitle string `json:"first_narrative_title"` + Questions StoriesQuestions `json:"questions"` +} + +// StoriesFeedItemType type. +type StoriesFeedItemType string + +// Possible values. +const ( + StoriesFeedItemStories StoriesFeedItemType = "stories" + StoriesFeedItemCommunity StoriesFeedItemType = "community_grouped_stories" + StoriesFeedItemApp StoriesFeedItemType = "app_grouped_stories" +) + +// StoriesFeedItem struct. +type StoriesFeedItem struct { + Type StoriesFeedItemType `json:"type"` + ID string `json:"id"` + Stories []StoriesStory `json:"stories"` + Grouped StoriesFeedItemType `json:"grouped"` + App AppsApp `json:"app"` +} + +// StoriesClickableStickers struct. +// +// The field clickable_stickers is available in the history object. +// The sticker object is pasted by the developer on the client himself, only +// coordinates are transmitted to the server. +// +// https://vk.com/dev/objects/clickable_stickers +type StoriesClickableStickers struct { + OriginalWidth int `json:"original_width"` + OriginalHeight int `json:"original_height"` + ClickableStickers []StoriesClickableSticker `json:"clickable_stickers"` +} + +// NewClickableStickers return new StoriesClickableStickers. +// +// Requires the width and height of the original photo or video. +func NewClickableStickers(width, height int) *StoriesClickableStickers { + return &StoriesClickableStickers{ + OriginalWidth: width, + OriginalHeight: height, + ClickableStickers: []StoriesClickableSticker{}, + } +} + +// AddMention add mention sticker. +// +// Mention should be in the format of a VK mentioning, for example: [id1|name] or [club1|name]. +func (cs *StoriesClickableStickers) AddMention(mention string, area []StoriesClickablePoint) *StoriesClickableStickers { + cs.ClickableStickers = append(cs.ClickableStickers, StoriesClickableSticker{ + Type: ClickableStickerMention, + ClickableArea: area, + Mention: mention, + }) + + return cs +} + +// AddHashtag add hashtag sticker. +// +// Hashtag must necessarily begin with the symbol #. +func (cs *StoriesClickableStickers) AddHashtag(hashtag string, area []StoriesClickablePoint) *StoriesClickableStickers { + cs.ClickableStickers = append(cs.ClickableStickers, StoriesClickableSticker{ + Type: ClickableStickerHashtag, + ClickableArea: area, + Hashtag: hashtag, + }) + + return cs +} + +// TODO: Add more clickable stickers func + +// ToJSON returns the JSON encoding of StoriesClickableStickers. +func (cs StoriesClickableStickers) ToJSON() string { + b, _ := json.Marshal(cs) + return string(b) +} + +// StoriesClickableSticker struct. +type StoriesClickableSticker struct { // nolint: maligned + ID int `json:"id"` + Type string `json:"type"` + ClickableArea []StoriesClickablePoint `json:"clickable_area"` + Style string `json:"style,omitempty"` + + // type=post + PostOwnerID int `json:"post_owner_id,omitempty"` + PostID int `json:"post_id,omitempty"` + + // type=sticker + StickerID int `json:"sticker_id,omitempty"` + StickerPackID int `json:"sticker_pack_id,omitempty"` + + // type=place + PlaceID int `json:"place_id,omitempty"` + + // type=question + Question string `json:"question,omitempty"` + QuestionButton string `json:"question_button,omitempty"` + QuestionDefaultPrivate BaseBoolInt `json:"question_default_private,omitempty"` + Color string `json:"color,omitempty"` + + // type=mention + Mention string `json:"mention,omitempty"` + + // type=hashtag + Hashtag string `json:"hashtag,omitempty"` + + // type=link + LinkObject BaseLink `json:"link_object,omitempty"` + TooltipText string `json:"tooltip_text,omitempty"` + + // type=market_item + Subtype string `json:"subtype,omitempty"` + // LinkObject BaseLink `json:"link_object,omitempty"` // subtype=aliexpress_product + MarketItem MarketMarketItem `json:"market_item,omitempty"` // subtype=market_item + + // type=story_reply + OwnerID int `json:"owner_id,omitempty"` + StoryID int `json:"story_id,omitempty"` + + // type=owner + // OwnerID int `json:"owner_id,omitempty"` + + // type=poll + Poll PollsPoll `json:"poll,omitempty"` + + // type=music + Audio AudioAudio `json:"audio,omitempty"` + AudioStartTime int `json:"audio_start_time,omitempty"` + + // type=app + App AppsApp `json:"app"` + AppContext string `json:"app_context"` + HasNewInteractions BaseBoolInt `json:"has_new_interactions"` + IsBroadcastNotifyAllowed BaseBoolInt `json:"is_broadcast_notify_allowed"` +} + +// TODO: сделать несколько структур для кликабельного стикера + +// Type of clickable sticker. +const ( + ClickableStickerPost = "post" + ClickableStickerSticker = "sticker" + ClickableStickerPlace = "place" + ClickableStickerQuestion = "question" + ClickableStickerMention = "mention" + ClickableStickerHashtag = "hashtag" + ClickableStickerMarketItem = "market_item" + ClickableStickerLink = "link" + ClickableStickerStoryReply = "story_reply" + ClickableStickerOwner = "owner" + ClickableStickerPoll = "poll" + ClickableStickerMusic = "music" + ClickableStickerApp = "app" +) + +// Subtype of clickable sticker. +const ( + ClickableStickerSubtypeMarketItem = "market_item" + ClickableStickerSubtypeAliexpressProduct = "aliexpress_product" +) + +// Clickable sticker style. +const ( + ClickableStickerTransparent = "transparent" + ClickableStickerBlueGradient = "blue_gradient" + ClickableStickerRedGradient = "red_gradient" + ClickableStickerUnderline = "underline" + ClickableStickerBlue = "blue" + ClickableStickerGreen = "green" + ClickableStickerWhite = "white" + ClickableStickerQuestionReply = "question_reply" + ClickableStickerLight = "light" + ClickableStickerImpressive = "impressive" +) + +// StoriesClickablePoint struct. +type StoriesClickablePoint struct { + X int `json:"x"` + Y int `json:"y"` +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/users.go b/vendor/github.com/SevereCloud/vksdk/v2/object/users.go new file mode 100644 index 00000000..07e1049f --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/users.go @@ -0,0 +1,299 @@ +package object // import "github.com/SevereCloud/vksdk/v2/object" + +import ( + "fmt" +) + +// User relationship status. +const ( + UserRelationNotSpecified = iota // not specified + UserRelationSingle // single + UserRelationInRelationship // in a relationship + UserRelationEngaged // engaged + UserRelationMarried // married + UserRelationComplicated // complicated + UserRelationActivelySearching // actively searching + UserRelationInLove // in love + UserRelationCivilUnion // in a civil union +) + +// UsersUser struct. +type UsersUser struct { + ID int `json:"id"` + FirstName string `json:"first_name"` + LastName string `json:"last_name"` + FirstNameNom string `json:"first_name_nom"` + FirstNameGen string `json:"first_name_gen"` + FirstNameDat string `json:"first_name_dat"` + FirstNameAcc string `json:"first_name_acc"` + FirstNameIns string `json:"first_name_ins"` + FirstNameAbl string `json:"first_name_abl"` + LastNameNom string `json:"last_name_nom"` + LastNameGen string `json:"last_name_gen"` + LastNameDat string `json:"last_name_dat"` + LastNameAcc string `json:"last_name_acc"` + LastNameIns string `json:"last_name_ins"` + LastNameAbl string `json:"last_name_abl"` + MaidenName string `json:"maiden_name"` + Sex int `json:"sex"` + Nickname string `json:"nickname"` + Domain string `json:"domain"` + ScreenName string `json:"screen_name"` + Bdate string `json:"bdate"` + City BaseObject `json:"city"` + Country BaseObject `json:"country"` + Photo50 string `json:"photo_50"` + Photo100 string `json:"photo_100"` + Photo200 string `json:"photo_200"` + PhotoMax string `json:"photo_max"` + Photo200Orig string `json:"photo_200_orig"` + Photo400Orig string `json:"photo_400_orig"` + PhotoMaxOrig string `json:"photo_max_orig"` + PhotoID string `json:"photo_id"` + FriendStatus int `json:"friend_status"` // see FriendStatus const + OnlineApp int `json:"online_app"` + Online BaseBoolInt `json:"online"` + OnlineMobile BaseBoolInt `json:"online_mobile"` + HasPhoto BaseBoolInt `json:"has_photo"` + HasMobile BaseBoolInt `json:"has_mobile"` + IsClosed BaseBoolInt `json:"is_closed"` + IsFriend BaseBoolInt `json:"is_friend"` + IsFavorite BaseBoolInt `json:"is_favorite"` + IsHiddenFromFeed BaseBoolInt `json:"is_hidden_from_feed"` + CanAccessClosed BaseBoolInt `json:"can_access_closed"` + CanBeInvitedGroup BaseBoolInt `json:"can_be_invited_group"` + CanPost BaseBoolInt `json:"can_post"` + CanSeeAllPosts BaseBoolInt `json:"can_see_all_posts"` + CanSeeAudio BaseBoolInt `json:"can_see_audio"` + CanWritePrivateMessage BaseBoolInt `json:"can_write_private_message"` + CanSendFriendRequest BaseBoolInt `json:"can_send_friend_request"` + Verified BaseBoolInt `json:"verified"` + Trending BaseBoolInt `json:"trending"` + Blacklisted BaseBoolInt `json:"blacklisted"` + BlacklistedByMe BaseBoolInt `json:"blacklisted_by_me"` + Facebook string `json:"facebook"` + FacebookName string `json:"facebook_name"` + Twitter string `json:"twitter"` + Instagram string `json:"instagram"` + Site string `json:"site"` + Status string `json:"status"` + StatusAudio AudioAudio `json:"status_audio"` + LastSeen UsersLastSeen `json:"last_seen"` + CropPhoto UsersCropPhoto `json:"crop_photo"` + FollowersCount int `json:"followers_count"` + CommonCount int `json:"common_count"` + Occupation UsersOccupation `json:"occupation"` + Career []UsersCareer `json:"career"` + Military []UsersMilitary `json:"military"` + University int `json:"university"` + UniversityName string `json:"university_name"` + Faculty int `json:"faculty"` + FacultyName string `json:"faculty_name"` + Graduation int `json:"graduation"` + EducationForm string `json:"education_form"` + EducationStatus string `json:"education_status"` + HomeTown string `json:"home_town"` + Relation int `json:"relation"` + Personal UsersPersonal `json:"personal"` + Interests string `json:"interests"` + Music string `json:"music"` + Activities string `json:"activities"` + Movies string `json:"movies"` + Tv string `json:"tv"` + Books string `json:"books"` + Games string `json:"games"` + Universities []UsersUniversity `json:"universities"` + Schools []UsersSchool `json:"schools"` + About string `json:"about"` + Relatives []UsersRelative `json:"relatives"` + Quotes string `json:"quotes"` + Lists []int `json:"lists"` + Deactivated string `json:"deactivated"` + WallDefault string `json:"wall_default"` + Timezone int `json:"timezone"` + Exports UsersExports `json:"exports"` + Counters UsersUserCounters `json:"counters"` + MobilePhone string `json:"mobile_phone"` + HomePhone string `json:"home_phone"` + FoundWith int `json:"found_with"` // TODO: check it + OnlineInfo UsersOnlineInfo `json:"online_info"` + Mutual FriendsRequestsMutual `json:"mutual"` + TrackCode string `json:"track_code"` + RelationPartner UsersUserMin `json:"relation_partner"` + Type string `json:"type"` + Skype string `json:"skype"` +} + +// ToMention return mention. +func (user UsersUser) ToMention() string { + return fmt.Sprintf("[id%d|%s %s]", user.ID, user.FirstName, user.LastName) +} + +// UsersOnlineInfo struct. +type UsersOnlineInfo struct { + AppID int `json:"app_id"` + LastSeen int `json:"last_seen"` + Status string `json:"status"` + Visible BaseBoolInt `json:"visible"` + IsOnline BaseBoolInt `json:"is_online"` + IsMobile BaseBoolInt `json:"is_mobile"` +} + +// UsersUserMin struct. +type UsersUserMin struct { + Deactivated string `json:"deactivated"` // Returns if a profile is deleted or blocked + FirstName string `json:"first_name"` // User first name + Hidden int `json:"hidden"` // Returns if a profile is hidden. + ID int `json:"id"` // User ID + LastName string `json:"last_name"` // User last name +} + +// ToMention return mention. +func (user UsersUserMin) ToMention() string { + return fmt.Sprintf("[id%d|%s %s]", user.ID, user.FirstName, user.LastName) +} + +// UsersCareer struct. +type UsersCareer struct { + CityID int `json:"city_id"` // City ID + CityName string `json:"city_name"` // City name + Company string `json:"company"` // Company name + CountryID int `json:"country_id"` // Country ID + From int `json:"from"` // From year + GroupID int `json:"group_id"` // Community ID + ID int `json:"id"` // Career ID + Position string `json:"position"` // Position + Until int `json:"until"` // Till year +} + +// UsersCropPhoto struct. +type UsersCropPhoto struct { + Crop UsersCropPhotoCrop `json:"crop"` + Photo PhotosPhoto `json:"photo"` + Rect UsersCropPhotoRect `json:"rect"` +} + +// UsersCropPhotoCrop struct. +type UsersCropPhotoCrop struct { + X float64 `json:"x"` // Coordinate X of the left upper corner + X2 float64 `json:"x2"` // Coordinate X of the right lower corner + Y float64 `json:"y"` // Coordinate Y of the left upper corner + Y2 float64 `json:"y2"` // Coordinate Y of the right lower corner +} + +// UsersCropPhotoRect struct. +type UsersCropPhotoRect struct { + X float64 `json:"x"` // Coordinate X of the left upper corner + X2 float64 `json:"x2"` // Coordinate X of the right lower corner + Y float64 `json:"y"` // Coordinate Y of the left upper corner + Y2 float64 `json:"y2"` // Coordinate Y of the right lower corner +} + +// UsersExports struct. +type UsersExports struct { + Facebook int `json:"facebook"` + Livejournal int `json:"livejournal"` + Twitter int `json:"twitter"` +} + +// UsersLastSeen struct. +type UsersLastSeen struct { + Platform int `json:"platform"` // Type of the platform that used for the last authorization + Time int `json:"time"` // Last visit date (in Unix time) +} + +// UsersMilitary struct. +type UsersMilitary struct { + CountryID int `json:"country_id"` // Country ID + From int `json:"from"` // From year + ID int `json:"id"` // Military ID + Unit string `json:"unit"` // Unit name + UnitID int `json:"unit_id"` // Unit ID + Until int `json:"until"` // Till year +} + +// UsersOccupation struct. +type UsersOccupation struct { + // BUG(VK): UsersOccupation.ID is float https://vk.com/bug136108 + ID float64 `json:"id"` // ID of school, university, company group + Name string `json:"name"` // Name of occupation + Type string `json:"type"` // Type of occupation +} + +// UsersPersonal struct. +type UsersPersonal struct { + Alcohol int `json:"alcohol"` // User's views on alcohol + InspiredBy string `json:"inspired_by"` // User's inspired by + Langs []string `json:"langs"` + LifeMain int `json:"life_main"` // User's personal priority in life + PeopleMain int `json:"people_main"` // User's personal priority in people + Political int `json:"political"` // User's political views + Religion string `json:"religion"` // User's religion + Smoking int `json:"smoking"` // User's views on smoking + ReligionID int `json:"religion_id"` +} + +// UsersRelative struct. +type UsersRelative struct { + BirthDate string `json:"birth_date"` // Date of child birthday (format dd.mm.yyyy) + ID int `json:"id"` // Relative ID + Name string `json:"name"` // Name of relative + Type string `json:"type"` // Relative type +} + +// UsersSchool struct. +type UsersSchool struct { + City int `json:"city"` // City ID + Class string `json:"class"` // School class letter + Country int `json:"country"` // Country ID + ID string `json:"id"` // School ID + Name string `json:"name"` // School name + Type int `json:"type"` // School type ID + TypeStr string `json:"type_str"` // School type name + YearFrom int `json:"year_from"` // Year the user started to study + YearGraduated int `json:"year_graduated"` // Graduation year + YearTo int `json:"year_to"` // Year the user finished to study + Speciality string `json:"speciality,omitempty"` +} + +// UsersUniversity struct. +type UsersUniversity struct { + Chair int `json:"chair"` // Chair ID + ChairName string `json:"chair_name"` // Chair name + City int `json:"city"` // City ID + Country int `json:"country"` // Country ID + EducationForm string `json:"education_form"` // Education form + EducationStatus string `json:"education_status"` // Education status + Faculty int `json:"faculty"` // Faculty ID + FacultyName string `json:"faculty_name"` // Faculty name + Graduation int `json:"graduation"` // Graduation year + ID int `json:"id"` // University ID + Name string `json:"name"` // University name +} + +// UsersUserCounters struct. +type UsersUserCounters struct { + Albums int `json:"albums"` // Albums number + Audios int `json:"audios"` // Audios number + Followers int `json:"followers"` // Followers number + Friends int `json:"friends"` // Friends number + Gifts int `json:"gifts"` // Gifts number + Groups int `json:"groups"` // Communities number + Notes int `json:"notes"` // Notes number + OnlineFriends int `json:"online_friends"` // Online friends number + Pages int `json:"pages"` // Public pages number + Photos int `json:"photos"` // Photos number + Subscriptions int `json:"subscriptions"` // Subscriptions number + UserPhotos int `json:"user_photos"` // Number of photos with user + UserVideos int `json:"user_videos"` // Number of videos with user + Videos int `json:"videos"` // Videos number + MutualFriends int `json:"mutual_friends"` +} + +// UsersUserLim struct. +type UsersUserLim struct { + ID int `json:"id"` + Name string `json:"name"` + NameGen string `json:"name_gen"` + Photo string `json:"photo"` +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/utils.go b/vendor/github.com/SevereCloud/vksdk/v2/object/utils.go new file mode 100644 index 00000000..3bbd775d --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/utils.go @@ -0,0 +1,93 @@ +package object // import "github.com/SevereCloud/vksdk/v2/object" + +// 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"` +} + +// 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 +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/video.go b/vendor/github.com/SevereCloud/vksdk/v2/object/video.go new file mode 100644 index 00000000..62110243 --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/video.go @@ -0,0 +1,277 @@ +package object // import "github.com/SevereCloud/vksdk/v2/object" + +import ( + "fmt" +) + +// VideoVideo struct. +type VideoVideo struct { + // Video access key. + AccessKey string `json:"access_key"` + + // Date when the video has been added in Unixtime. + AddingDate int `json:"adding_date"` + + // Information whether current user can add the video. + CanAdd BaseBoolInt `json:"can_add"` + + // Information whether current user can add the video to faves. + CanAddToFaves BaseBoolInt `json:"can_add_to_faves"` + + // Information whether current user can comment the video. + CanComment BaseBoolInt `json:"can_comment"` + + // Information whether current user can edit the video. + CanEdit BaseBoolInt `json:"can_edit"` + + // Information whether current user can like the video. + CanLike BaseBoolInt `json:"can_like"` + + // Information whether current user can repost this video. + CanRepost BaseBoolInt `json:"can_repost"` + CanSubscribe BaseBoolInt `json:"can_subscribe"` + CanAttachLink BaseBoolInt `json:"can_attach_link"` + IsFavorite BaseBoolInt `json:"is_favorite"` + IsPrivate BaseBoolInt `json:"is_private"` + Added BaseBoolInt `json:"added"` + Repeat BaseBoolInt `json:"repeat"` // Information whether the video is repeated + ContentRestricted BaseBoolInt `json:"content_restricted"` + Live BaseBoolInt `json:"live"` // Returns if the video is a live stream + Upcoming BaseBoolInt `json:"upcoming"` + Comments int `json:"comments"` // Number of comments + Date int `json:"date"` // Date when video has been uploaded in Unixtime + Description string `json:"description"` // Video description + Duration int `json:"duration"` // Video duration in seconds + Files VideoVideoFiles `json:"files"` + FirstFrame []VideoVideoImage `json:"first_frame"` + Image []VideoVideoImage `json:"image"` + Height int `json:"height"` // Video height + ID int `json:"id"` // Video ID + OwnerID int `json:"owner_id"` // Video owner ID + UserID int `json:"user_id"` + Photo130 string `json:"photo_130"` // URL of the preview image with 130 px in width + Photo320 string `json:"photo_320"` // URL of the preview image with 320 px in width + Photo640 string `json:"photo_640"` // URL of the preview image with 640 px in width + Photo800 string `json:"photo_800"` // URL of the preview image with 800 px in width + Photo1280 string `json:"photo_1280"` // URL of the preview image with 1280 px in width + + // URL of the page with a player that can be used to play the video in the browser. + Player string `json:"player"` + Processing int `json:"processing"` // Returns if the video is processing + Title string `json:"title"` // Video title + Type string `json:"type"` + Views int `json:"views"` // Number of views + Width int `json:"width"` // Video width + Platform string `json:"platform"` + LocalViews int `json:"local_views"` + Likes BaseLikesInfo `json:"likes"` // Count of likes + Reposts BaseRepostsInfo `json:"reposts"` // Count of views + TrackCode string `json:"track_code"` + PrivacyView Privacy `json:"privacy_view"` + PrivacyComment Privacy `json:"privacy_comment"` + ActionButton VideoActionButton `json:"action_button"` + Restriction VideoRestriction `json:"restriction"` + ContentRestrictedMessage string `json:"content_restricted_message"` +} + +// ToAttachment return attachment format. +func (video VideoVideo) ToAttachment() string { + return fmt.Sprintf("video%d_%d", video.OwnerID, video.ID) +} + +// VideoRestriction struct. +type VideoRestriction struct { + Title string `json:"title"` + Text string `json:"text"` + AlwaysShown BaseBoolInt `json:"always_shown"` + Blur BaseBoolInt `json:"blur"` + CanPlay BaseBoolInt `json:"can_play"` + CanPreview BaseBoolInt `json:"can_preview"` + CardIcon []BaseImage `json:"card_icon"` + ListIcon []BaseImage `json:"list_icon"` +} + +// VideoActionButton struct. +type VideoActionButton struct { + ID string `json:"id"` + Type string `json:"type"` + URL string `json:"url"` + Snippet VideoSnippet `json:"snippet"` +} + +// VideoSnippet struct. +type VideoSnippet struct { + Description string `json:"description"` + OpenTitle string `json:"open_title"` + Title string `json:"title"` + TypeName string `json:"type_name"` + Date int `json:"date"` + Image []BaseImage `json:"image"` +} + +// VideoVideoFiles struct. +type VideoVideoFiles struct { + External string `json:"external"` // URL of the external player + Mp4_1080 string `json:"mp4_1080"` // URL of the mpeg4 file with 1080p quality + Mp4_240 string `json:"mp4_240"` // URL of the mpeg4 file with 240p quality + Mp4_360 string `json:"mp4_360"` // URL of the mpeg4 file with 360p quality + Mp4_480 string `json:"mp4_480"` // URL of the mpeg4 file with 480p quality + Mp4_720 string `json:"mp4_720"` // URL of the mpeg4 file with 720p quality + Live string `json:"live"` + HLS string `json:"hls"` +} + +// VideoCatBlock struct. +type VideoCatBlock struct { + CanHide BaseBoolInt `json:"can_hide"` + ID int `json:"id"` + Items []VideoCatElement `json:"items"` + Name string `json:"name"` + Next string `json:"next"` + Type string `json:"type"` + View string `json:"view"` +} + +// VideoCatElement struct. +type VideoCatElement struct { + CanAdd BaseBoolInt `json:"can_add"` + CanEdit BaseBoolInt `json:"can_edit"` + IsPrivate BaseBoolInt `json:"is_private"` + Comments int `json:"comments"` + Count int `json:"count"` + Date int `json:"date"` + Description string `json:"description"` + Duration int `json:"duration"` + ID int `json:"id"` + OwnerID int `json:"owner_id"` + Photo130 string `json:"photo_130"` + Photo160 string `json:"photo_160"` + Photo320 string `json:"photo_320"` + Photo640 string `json:"photo_640"` + Photo800 string `json:"photo_800"` + Title string `json:"title"` + Type string `json:"type"` + UpdatedTime int `json:"updated_time"` + Views int `json:"views"` +} + +// VideoSaveResult struct. +type VideoSaveResult struct { + Description string `json:"description"` // Video description + OwnerID int `json:"owner_id"` // Video owner ID + Title string `json:"title"` // Video title + UploadURL string `json:"upload_url"` // URL for the video uploading + VideoID int `json:"video_id"` // Video ID + AccessKey string `json:"access_key"` // Video access key +} + +// VideoUploadResponse struct. +type VideoUploadResponse struct { + Size int `json:"size"` + VideoID int `json:"video_id"` +} + +// VideoVideoAlbum struct. +type VideoVideoAlbum struct { + ID int `json:"id"` + OwnerID int `json:"owner_id"` + Title string `json:"title"` +} + +// VideoVideoAlbumFull struct. +type VideoVideoAlbumFull struct { + Count int `json:"count"` // Total number of videos in album + ID int `json:"id"` // Album ID + Image []VideoVideoImage `json:"image"` // Album cover image in different sizes + IsSystem BaseBoolInt `json:"is_system"` // Information whether album is system + OwnerID int `json:"owner_id"` // Album owner's ID + Photo160 string `json:"photo_160"` // URL of the preview image with 160px in width + Photo320 string `json:"photo_320"` // URL of the preview image with 320px in width + Title string `json:"title"` // Album title + UpdatedTime int `json:"updated_time"` // Date when the album has been updated last time in Unixtime + ImageBlur int `json:"image_blur"` + Privacy Privacy `json:"privacy"` +} + +// VideoVideoFull struct. +type VideoVideoFull struct { + AccessKey string `json:"access_key"` // Video access key + AddingDate int `json:"adding_date"` // Date when the video has been added in Unixtime + IsFavorite BaseBoolInt `json:"is_favorite"` + CanAdd BaseBoolInt `json:"can_add"` // Information whether current user can add the video + CanComment BaseBoolInt `json:"can_comment"` // Information whether current user can comment the video + CanEdit BaseBoolInt `json:"can_edit"` // Information whether current user can edit the video + CanRepost BaseBoolInt `json:"can_repost"` // Information whether current user can comment the video + CanLike BaseBoolInt `json:"can_like"` + CanAddToFaves BaseBoolInt `json:"can_add_to_faves"` + Repeat BaseBoolInt `json:"repeat"` // Information whether the video is repeated + Comments int `json:"comments"` // Number of comments + Date int `json:"date"` // Date when video has been uploaded in Unixtime + Description string `json:"description"` // Video description + Duration int `json:"duration"` // Video duration in seconds + Files VideoVideoFiles `json:"files"` + ID int `json:"id"` // Video ID + Likes BaseLikes `json:"likes"` + Live int `json:"live"` // Returns if the video is live translation + OwnerID int `json:"owner_id"` // Video owner ID + + // URL of the page with a player that can be used to play the video in the browser. + Player string `json:"player"` + Processing int `json:"processing"` // Returns if the video is processing + Title string `json:"title"` // Video title + Views int `json:"views"` // Number of views + Width int `json:"width"` + Height int `json:"height"` + Image []VideoVideoImage `json:"image"` + FirstFrame []VideoVideoImage `json:"first_frame"` + Added int `json:"added"` + Type string `json:"type"` + Reposts BaseRepostsInfo `json:"reposts"` +} + +// ToAttachment return attachment format. +func (video VideoVideoFull) ToAttachment() string { + return fmt.Sprintf("video%d_%d", video.OwnerID, video.ID) +} + +// VideoVideoTag struct. +type VideoVideoTag struct { + Date int `json:"date"` + ID int `json:"id"` + PlacerID int `json:"placer_id"` + TaggedName string `json:"tagged_name"` + UserID int `json:"user_id"` + Viewed BaseBoolInt `json:"viewed"` +} + +// VideoVideoTagInfo struct. +type VideoVideoTagInfo struct { + AccessKey string `json:"access_key"` + AddingDate int `json:"adding_date"` + CanAdd BaseBoolInt `json:"can_add"` + CanEdit BaseBoolInt `json:"can_edit"` + Comments int `json:"comments"` + Date int `json:"date"` + Description string `json:"description"` + Duration int `json:"duration"` + Files VideoVideoFiles `json:"files"` + ID int `json:"id"` + Live int `json:"live"` + OwnerID int `json:"owner_id"` + Photo130 string `json:"photo_130"` + Photo320 string `json:"photo_320"` + Photo800 string `json:"photo_800"` + PlacerID int `json:"placer_id"` + Player string `json:"player"` + Processing int `json:"processing"` + TagCreated int `json:"tag_created"` + TagID int `json:"tag_id"` + Title string `json:"title"` + Views int `json:"views"` +} + +// VideoVideoImage struct. +type VideoVideoImage struct { + BaseImage + WithPadding BaseBoolInt `json:"with_padding"` +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/wall.go b/vendor/github.com/SevereCloud/vksdk/v2/object/wall.go new file mode 100644 index 00000000..5345fc5c --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/wall.go @@ -0,0 +1,257 @@ +package object // import "github.com/SevereCloud/vksdk/v2/object" + +// WallAppPost struct. +type WallAppPost struct { + ID int `json:"id"` // Application ID + Name string `json:"name"` // Application name + Photo130 string `json:"photo_130"` // URL of the preview image with 130 px in width + Photo604 string `json:"photo_604"` // URL of the preview image with 604 px in width +} + +// WallAttachedNote struct. +type WallAttachedNote struct { + Comments int `json:"comments"` // Comments number + Date int `json:"date"` // Date when the note has been created in Unixtime + ID int `json:"id"` // Note ID + OwnerID int `json:"owner_id"` // Note owner's ID + ReadComments int `json:"read_comments"` // Read comments number + Title string `json:"title"` // Note title + ViewURL string `json:"view_url"` // URL of the page with note preview +} + +// WallCommentAttachment struct. +type WallCommentAttachment struct { + Audio AudioAudio `json:"audio"` + Doc DocsDoc `json:"doc"` + Link BaseLink `json:"link"` + Market MarketMarketItem `json:"market"` + MarketMarketAlbum MarketMarketAlbum `json:"market_market_album"` + Note WallAttachedNote `json:"note"` + Page PagesWikipageFull `json:"page"` + Photo PhotosPhoto `json:"photo"` + Sticker BaseSticker `json:"sticker"` + Type string `json:"type"` + Video VideoVideo `json:"video"` + Graffiti WallGraffiti `json:"graffiti"` +} + +// WallGraffiti struct. +type WallGraffiti struct { + ID int `json:"id"` // Graffiti ID + OwnerID int `json:"owner_id"` // Graffiti owner's ID + Photo200 string `json:"photo_200"` // URL of the preview image with 200 px in width + Photo586 string `json:"photo_586"` // URL of the preview image with 586 px in width + URL string `json:"url"` + Width int `json:"width"` + Height int `json:"height"` + AccessKey string `json:"access_key"` +} + +// Type of post source. +const ( + WallPostSourceTypeVk = "vk" + WallPostSourceTypeWidget = "widget" + WallPostSourceTypeAPI = "api" + WallPostSourceTypeRss = "rss" + WallPostSourceTypeSms = "sms" +) + +// WallPostSource struct. +type WallPostSource struct { + Link BaseLink `json:"link"` + Data string `json:"data"` // Additional data + Platform string `json:"platform"` // Platform name + Type string `json:"type"` + URL string `json:"url"` // URL to an external site used to publish the post +} + +// WallPostedPhoto struct. +type WallPostedPhoto struct { + ID int `json:"id"` // Photo ID + OwnerID int `json:"owner_id"` // Photo owner's ID + Photo130 string `json:"photo_130"` // URL of the preview image with 130 px in width + Photo604 string `json:"photo_604"` // URL of the preview image with 604 px in width +} + +// WallViews struct. +type WallViews struct { + Count int `json:"count"` // Count +} + +// WallWallCommentThread struct. +type WallWallCommentThread struct { + Count int `json:"count"` // Comments number + Items []WallWallComment `json:"items"` + CanPost BaseBoolInt `json:"can_post"` // Information whether current user can comment the post + GroupsCanPost BaseBoolInt `json:"groups_can_post"` // Information whether groups can comment the post + ShowReplyButton BaseBoolInt `json:"show_reply_button"` +} + +// WallWallComment struct. +type WallWallComment struct { + Attachments []WallCommentAttachment `json:"attachments"` + Date int `json:"date"` // Date when the comment has been added in Unixtime + Deleted BaseBoolInt `json:"deleted"` + FromID int `json:"from_id"` // Author ID + ID int `json:"id"` // Comment ID + Likes BaseLikesInfo `json:"likes"` + RealOffset int `json:"real_offset"` // Real position of the comment + ReplyToComment int `json:"reply_to_comment"` // Replied comment ID + ReplyToUser int `json:"reply_to_user"` // Replied user ID + Text string `json:"text"` // Comment text + PostID int `json:"post_id"` + PostOwnerID int `json:"post_owner_id"` + PhotoID int `json:"photo_id"` + PhotoOwnerID int `json:"photo_owner_id"` + VideoID int `json:"video_id"` + VideoOwnerID int `json:"video_owner_id"` + ItemID int `json:"item_id"` + MarketOwnerID int `json:"market_owner_id"` + ParentsStack []int `json:"parents_stack"` + OwnerID int `json:"owner_id"` + Thread WallWallCommentThread `json:"thread"` + Donut WallWallCommentDonut `json:"donut"` +} + +// WallWallCommentDonut info about VK Donut. +type WallWallCommentDonut struct { + IsDonut BaseBoolInt `json:"is_donut"` + Placeholder string `json:"placeholder"` +} + +// WallPost type. +const ( + WallPostTypePost = "post" + WallPostTypeCopy = "copy" + WallPostTypeReply = "reply" + WallPostTypePostpone = "postpone" + WallPostTypeSuggest = "suggest" +) + +// WallWallpost struct. +type WallWallpost struct { + AccessKey string `json:"access_key"` // Access key to private object + ID int `json:"id"` // Post ID + OwnerID int `json:"owner_id"` // Wall owner's ID + FromID int `json:"from_id"` // Post author ID + CreatedBy int `json:"created_by"` + Date int `json:"date"` // Date of publishing in Unixtime + Text string `json:"text"` // Post text + ReplyOwnerID int `json:"reply_owner_id"` + ReplyPostID int `json:"reply_post_id"` + FriendsOnly int `json:"friends_only"` + Comments BaseCommentsInfo `json:"comments"` + Likes BaseLikesInfo `json:"likes"` // Count of likes + Reposts BaseRepostsInfo `json:"reposts"` // Count of views + Views WallViews `json:"views"` // Count of views + PostType string `json:"post_type"` + PostSource WallPostSource `json:"post_source"` + Attachments []WallWallpostAttachment `json:"attachments"` + Geo BaseGeo `json:"geo"` + SignerID int `json:"signer_id"` // Post signer ID + CopyHistory []WallWallpost `json:"copy_history"` + CanPin BaseBoolInt `json:"can_pin"` + CanDelete BaseBoolInt `json:"can_delete"` + CanEdit BaseBoolInt `json:"can_edit"` + IsPinned BaseBoolInt `json:"is_pinned"` + IsFavorite BaseBoolInt `json:"is_favorite"` // Information whether the post in favorites list + IsArchived BaseBoolInt `json:"is_archived"` // Is post archived, only for post owners + MarkedAsAds BaseBoolInt `json:"marked_as_ads"` + Edited int `json:"edited"` // Date of editing in Unixtime + Copyright WallPostCopyright `json:"copyright"` + PostID int `json:"post_id"` + ParentsStack []int `json:"parents_stack"` + Donut WallWallpostDonut `json:"donut"` // need api v5.125 + ShortTextRate float64 `json:"short_text_rate"` + CarouselOffset int `json:"carousel_offset"` +} + +// Attachment type. +// +// TODO: check this. +const ( + AttachmentTypePhoto = "photo" + AttachmentTypePostedPhoto = "posted_photo" + AttachmentTypeAudio = "audio" + AttachmentTypeVideo = "video" + AttachmentTypeDoc = "doc" + AttachmentTypeLink = "link" + AttachmentTypeGraffiti = "graffiti" + AttachmentTypeNote = "note" + AttachmentTypeApp = "app" + AttachmentTypePoll = "poll" + AttachmentTypePage = "page" + AttachmentTypeAlbum = "album" + AttachmentTypePhotosList = "photos_list" + AttachmentTypeMarketAlbum = "market_album" + AttachmentTypeMarket = "market" + AttachmentTypeEvent = "event" + AttachmentTypeWall = "wall" + AttachmentTypeStory = "story" + AttachmentTypePodcast = "podcast" +) + +// WallWallpostAttachment struct. +type WallWallpostAttachment struct { + AccessKey string `json:"access_key"` // Access key for the audio + Album PhotosPhotoAlbum `json:"album"` + App WallAppPost `json:"app"` + Audio AudioAudio `json:"audio"` + Doc DocsDoc `json:"doc"` + Event EventsEventAttach `json:"event"` + Graffiti WallGraffiti `json:"graffiti"` + Link BaseLink `json:"link"` + Market MarketMarketItem `json:"market"` + MarketMarketAlbum MarketMarketAlbum `json:"market_market_album"` + Note WallAttachedNote `json:"note"` + Page PagesWikipageFull `json:"page"` + Photo PhotosPhoto `json:"photo"` + PhotosList []string `json:"photos_list"` + Poll PollsPoll `json:"poll"` + PostedPhoto WallPostedPhoto `json:"posted_photo"` + Type string `json:"type"` + Video VideoVideo `json:"video"` + Podcast PodcastsEpisode `json:"podcast"` +} + +// WallWallpostToID struct. +type WallWallpostToID struct { + Attachments []WallWallpostAttachment `json:"attachments"` + Comments BaseCommentsInfo `json:"comments"` + CopyOwnerID int `json:"copy_owner_id"` // ID of the source post owner + CopyPostID int `json:"copy_post_id"` // ID of the source post + Date int `json:"date"` // Date of publishing in Unixtime + FromID int `json:"from_id"` // Post author ID + Geo BaseGeo `json:"geo"` + ID int `json:"id"` // Post ID + Likes BaseLikesInfo `json:"likes"` + PostID int `json:"post_id"` // wall post ID (if comment) + PostSource WallPostSource `json:"post_source"` + PostType string `json:"post_type"` + Reposts BaseRepostsInfo `json:"reposts"` + SignerID int `json:"signer_id"` // Post signer ID + Text string `json:"text"` // Post text + ToID int `json:"to_id"` // Wall owner's ID + IsFavorite BaseBoolInt `json:"is_favorite"` // Information whether the post in favorites list + MarkedAsAds BaseBoolInt `json:"marked_as_ads"` + ParentsStack []int `json:"parents_stack"` + Donut WallWallpostDonut `json:"donut"` // need api v5.125 + ShortTextRate float64 `json:"short_text_rate"` +} + +// WallWallpostDonut info about VK Donut. +type WallWallpostDonut struct { + IsDonut BaseBoolInt `json:"is_donut"` + CanPublishFreeCopy BaseBoolInt `json:"can_publish_free_copy"` + PaidDuration int `json:"paid_duration"` + EditMode string `json:"edit_mode"` + Durations []BaseObjectWithName `json:"durations"` +} + +// WallPostCopyright information about the source of the post. +type WallPostCopyright struct { + ID int `json:"id,omitempty"` + Link string `json:"link"` + Type string `json:"type"` + Name string `json:"name"` +} diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/widgets.go b/vendor/github.com/SevereCloud/vksdk/v2/object/widgets.go new file mode 100644 index 00000000..80905a3f --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/widgets.go @@ -0,0 +1,68 @@ +package object // import "github.com/SevereCloud/vksdk/v2/object" + +// WidgetsCommentMedia struct. +type WidgetsCommentMedia struct { + ItemID int `json:"item_id"` // Media item ID + OwnerID int `json:"owner_id"` // Media owner's ID + ThumbSrc string `json:"thumb_src"` // URL of the preview image (type=photo only) + Type string `json:"type"` +} + +// WidgetsCommentReplies struct. +type WidgetsCommentReplies struct { + CanPost BaseBoolInt `json:"can_post"` // Information whether current user can comment the post + GroupsCanPost BaseBoolInt `json:"groups_can_post"` + Count int `json:"count"` // Comments number + Replies []WidgetsCommentRepliesItem `json:"replies"` +} + +// WidgetsCommentRepliesItem struct. +type WidgetsCommentRepliesItem struct { + Cid int `json:"cid"` // Comment ID + Date int `json:"date"` // Date when the comment has been added in Unixtime + Likes WidgetsWidgetLikes `json:"likes"` + Text string `json:"text"` // Comment text + UID int `json:"uid"` // User ID + User UsersUser `json:"user"` +} + +// WidgetsWidgetComment struct. +type WidgetsWidgetComment struct { + Attachments []WallCommentAttachment `json:"attachments"` + CanDelete BaseBoolInt `json:"can_delete"` // Information whether current user can delete the comment + IsFavorite BaseBoolInt `json:"is_favorite"` + Comments WidgetsCommentReplies `json:"comments"` + Date int `json:"date"` // Date when the comment has been added in Unixtime + FromID int `json:"from_id"` // Comment author ID + ID int `json:"id"` // Comment ID + Likes BaseLikesInfo `json:"likes"` + Media WidgetsCommentMedia `json:"media"` + PostType string `json:"post_type"` // Post type + Reposts BaseRepostsInfo `json:"reposts"` + Text string `json:"text"` // Comment text + ToID int `json:"to_id"` // Wall owner + PostSource WallPostSource `json:"post_source"` + Views struct { + Count int `json:"count"` + } `json:"views"` +} + +// WidgetsWidgetLikes struct. +type WidgetsWidgetLikes struct { + Count int `json:"count"` // Likes number +} + +// WidgetsWidgetPage struct. +type WidgetsWidgetPage struct { + Comments WidgetsWidgetLikes `json:"comments,omitempty"` + + // Date when Widgets on the page has been initialized firstly in Unixtime + Date int `json:"date,omitempty"` + Description string `json:"description,omitempty"` // Page description + ID int `json:"id,omitempty"` // Page ID + Likes WidgetsWidgetLikes `json:"likes,omitempty"` + PageID string `json:"page_id,omitempty"` // page_id parameter value + Photo string `json:"photo,omitempty"` // URL of the preview image + Title string `json:"title,omitempty"` // Page title + URL string `json:"url,omitempty"` // Page absolute URL +} |