2
0
mirror of https://github.com/42wim/matterbridge synced 2024-11-19 03:25:33 +00:00
matterbridge/vendor/github.com/SevereCloud/vksdk/v2/api/errors.go
Ivanik 8764be7461
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
2021-01-29 00:25:14 +01:00

928 lines
25 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package api
import (
"errors"
"fmt"
"github.com/SevereCloud/vksdk/v2/object"
)
// ErrorType is the type of an error.
type ErrorType int
// Error returns the message of a ErrorType.
func (e ErrorType) Error() string {
return fmt.Sprintf("api: error with code %d", e)
}
// Error codes. See https://vk.com/dev/errors
const (
ErrNoType ErrorType = 0 // NoType error
// Unknown error occurred
//
// Try again later.
ErrUnknown ErrorType = 1
// Application is disabled. Enable your application or use test mode
//
// You need to switch on the app in Settings
// https://vk.com/editapp?id={Your API_ID}
// or use the test mode (test_mode=1).
ErrDisabled ErrorType = 2
// Unknown method passed.
//
// Check the method name: http://vk.com/dev/methods
ErrMethod ErrorType = 3
ErrSignature ErrorType = 4 // Incorrect signature
// User authorization failed
//
// Make sure that you use a correct authorization type.
ErrAuth ErrorType = 5
// Too many requests per second
//
// Decrease the request frequency or use the execute method.
// More details on frequency limits here:
// https://vk.com/dev/api_requests
ErrTooMany ErrorType = 6
// Permission to perform this action is denied
//
// Make sure that your have received required permissions during the
// authorization.
// You can do it with the account.getAppPermissions method.
// https://vk.com/dev/permissions
ErrPermission ErrorType = 7
// Invalid request
//
// Check the request syntax and used parameters list (it can be found on
// a method description page).
ErrRequest ErrorType = 8
// Flood control
//
// You need to decrease the count of identical requests. For more efficient
// work you may use execute.
ErrFlood ErrorType = 9
// Internal server error
//
// Try again later.
ErrServer ErrorType = 10
// In test mode application should be disabled or user should be authorized
//
// Switch the app off in Settings:
//
// https://vk.com/editapp?id={Your API_ID}
//
ErrEnabledInTest ErrorType = 11
// Unable to compile code.
ErrCompile ErrorType = 12
// Runtime error occurred during code invocation.
ErrRuntime ErrorType = 13
// Captcha needed.
//
// See https://vk.com/dev/captcha_error
ErrCaptcha ErrorType = 14
// Access denied
//
// Make sure that you use correct identifiers and the content is available
// for the user in the full version of the site.
ErrAccess ErrorType = 15
// HTTP authorization failed
//
// To avoid this error check if a user has the 'Use secure connection'
// option enabled with the account.getInfo method.
ErrAuthHTTPS ErrorType = 16
// Validation required
//
// Make sure that you don't use a token received with
// http://vk.com/dev/auth_mobile for a request from the server.
// It's restricted.
//
// https://vk.com/dev/need_validation
ErrAuthValidation ErrorType = 17
ErrUserDeleted ErrorType = 18 // User was deleted or banned
ErrBlocked ErrorType = 19 // Content blocked
// Permission to perform this action is denied for non-standalone
// applications.
ErrMethodPermission ErrorType = 20
// Permission to perform this action is allowed only for standalone and
// OpenAPI applications.
ErrMethodAds ErrorType = 21
ErrUpload ErrorType = 22 // Upload error
// This method was disabled.
//
// All the methods available now are listed here: http://vk.com/dev/methods
ErrMethodDisabled ErrorType = 23
// Confirmation required
//
// In some cases VK requires to request action confirmation from the user
// (for Standalone apps only).
//
// Following parameter is transmitted with the error message as well:
//
// confirmation_text text of the message to be shown in the default
// confirmation window.
//
// The app should display the default confirmation window
// with text from confirmation_text and two buttons: "Continue" and
// "Cancel".
// If user confirms the action repeat the request with an extra parameter:
//
// confirm = 1.
//
// https://vk.com/dev/need_confirmation
ErrNeedConfirmation ErrorType = 24
ErrNeedTokenConfirmation ErrorType = 25 // Token confirmation required
ErrGroupAuth ErrorType = 27 // Group authorization failed
ErrAppAuth ErrorType = 28 // Application authorization failed
// Rate limit reached.
//
// More details on rate limits here: https://vk.com/dev/data_limits
ErrRateLimit ErrorType = 29
ErrPrivateProfile ErrorType = 30 // This profile is private
// Method execution was interrupted due to timeout.
ErrExecutionTimeout ErrorType = 36
// User was banned.
ErrUserBanned ErrorType = 37
// Unknown application.
ErrUnknownApplication ErrorType = 38
// Unknown user.
ErrUnknownUser ErrorType = 39
// Unknown group.
ErrUnknownGroup ErrorType = 40
// One of the parameters specified was missing or invalid
//
// Check the required parameters list and their format on a method
// description page.
ErrParam ErrorType = 100
// Invalid application API ID
//
// Find the app in the administrated list in settings:
// http://vk.com/apps?act=settings
// And set the correct API_ID in the request.
ErrParamAPIID ErrorType = 101
ErrLimits ErrorType = 103 // Out of limits
ErrNotFound ErrorType = 104 // Not found
ErrSaveFile ErrorType = 105 // Couldn't save file
ErrActionFailed ErrorType = 106 // Unable to process action
// Invalid user id
//
// Make sure that you use a correct id. You can get an id using a screen
// name with the utils.resolveScreenName method.
ErrParamUserID ErrorType = 113
ErrParamAlbumID ErrorType = 114 // Invalid album id
ErrParamServer ErrorType = 118 // Invalid server
ErrParamTitle ErrorType = 119 // Invalid title
ErrParamPhotos ErrorType = 122 // Invalid photos
ErrParamHash ErrorType = 121 // Invalid hash
ErrParamPhoto ErrorType = 129 // Invalid photo
ErrParamGroupID ErrorType = 125 // Invalid group id
ErrParamPageID ErrorType = 140 // Page not found
ErrAccessPage ErrorType = 141 // Access to page denied
// The mobile number of the user is unknown.
ErrMobileNotActivated ErrorType = 146
// Application has insufficient funds.
ErrInsufficientFunds ErrorType = 147
// Access to the menu of the user denied.
ErrAccessMenu ErrorType = 148
// Invalid timestamp
//
// You may get a correct value with the utils.getServerTime method.
ErrParamTimestamp ErrorType = 150
ErrFriendsListID ErrorType = 171 // Invalid list id
// Reached the maximum number of lists.
ErrFriendsListLimit ErrorType = 173
// Cannot add user himself as friend.
ErrFriendsAddYourself ErrorType = 174
// Cannot add this user to friends as they have put you on their blacklist.
ErrFriendsAddInEnemy ErrorType = 175
// Cannot add this user to friends as you put him on blacklist.
ErrFriendsAddEnemy ErrorType = 176
// Cannot add this user to friends as user not found.
ErrFriendsAddNotFound ErrorType = 177
ErrParamNoteID ErrorType = 180 // Note not found
ErrAccessNote ErrorType = 181 // Access to note denied
ErrAccessNoteComment ErrorType = 182 // You can't comment this note
ErrAccessComment ErrorType = 183 // Access to comment denied
// Access to album denied
//
// Make sure you use correct ids (owner_id is always positive for users,
// negative for communities) and the current user has access to the
// requested content in the full version of the site.
ErrAccessAlbum ErrorType = 200
// Access to audio denied
//
// Make sure you use correct ids (owner_id is always positive for users,
// negative for communities) and the current user has access to the
// requested content in the full version of the site.
ErrAccessAudio ErrorType = 201
// Access to group denied
//
// Make sure that the current user is a member or admin of the community
// (for closed and private groups and events).
ErrAccessGroup ErrorType = 203
// Access denied.
ErrAccessVideo ErrorType = 204
// Access denied.
ErrAccessMarket ErrorType = 205
// Access to wall's post denied.
ErrWallAccessPost ErrorType = 210
// Access to wall's comment denied.
ErrWallAccessComment ErrorType = 211
// Access to post comments denied.
ErrWallAccessReplies ErrorType = 212
// Access to status replies denied.
ErrWallAccessAddReply ErrorType = 213
// Access to adding post denied.
ErrWallAddPost ErrorType = 214
// Advertisement post was recently added.
ErrWallAdsPublished ErrorType = 219
// Too many recipients.
ErrWallTooManyRecipients ErrorType = 220
// User disabled track name broadcast.
ErrStatusNoAudio ErrorType = 221
// Hyperlinks are forbidden.
ErrWallLinksForbidden ErrorType = 222
// Too many replies.
ErrWallReplyOwnerFlood ErrorType = 223
// Too many ads posts.
ErrWallAdsPostLimitReached ErrorType = 224
// Donut is disabled.
ErrDonutDisabled ErrorType = 225
// Reaction can not be applied to the object.
ErrLikesReactionCanNotBeApplied ErrorType = 232
// Access to poll denied.
ErrPollsAccess ErrorType = 250
// Invalid answer id.
ErrPollsAnswerID ErrorType = 252
// Invalid poll id.
ErrPollsPollID ErrorType = 251
// Access denied, please vote first.
ErrPollsAccessWithoutVote ErrorType = 253
// Access to the groups list is denied due to the user's privacy settings.
ErrAccessGroups ErrorType = 260
// This album is full
//
// You need to delete the odd objects from the album or use another album.
ErrAlbumFull ErrorType = 300
ErrAlbumsLimit ErrorType = 302 // Albums number limit is reached
// Permission denied. You must enable votes processing in application
// settings
//
// Check the app settings:
//
// http://vk.com/editapp?id={Your API_ID}&section=payments
//
ErrVotesPermission ErrorType = 500
// Not enough votes.
ErrVotes ErrorType = 503
// Not enough money on owner's balance.
ErrNotEnoughMoney ErrorType = 504
// Permission denied. You have no access to operations specified with
// given object(s).
ErrAdsPermission ErrorType = 600
// Permission denied. You have requested too many actions this day. Try
// later.
ErrWeightedFlood ErrorType = 601
// Some part of the request has not been completed.
ErrAdsPartialSuccess ErrorType = 602
// Some ads error occurred.
ErrAdsSpecific ErrorType = 603
// Invalid domain.
ErrAdsDomainInvalid ErrorType = 604
// Domain is forbidden.
ErrAdsDomainForbidden ErrorType = 605
// Domain is reserved.
ErrAdsDomainReserved ErrorType = 606
// Domain is occupied.
ErrAdsDomainOccupied ErrorType = 607
// Domain is active.
ErrAdsDomainActive ErrorType = 608
// Domain app is invalid.
ErrAdsDomainAppInvalid ErrorType = 609
// Domain app is forbidden.
ErrAdsDomainAppForbidden ErrorType = 610
// Application must be verified.
ErrAdsApplicationMustBeVerified ErrorType = 611
// Application must be in domains list of site of ad unit.
ErrAdsApplicationMustBeInDomainsList ErrorType = 612
// Application is blocked.
ErrAdsApplicationBlocked ErrorType = 613
// Domain of type specified is forbidden in current office type.
ErrAdsDomainTypeForbiddenInCurrentOffice ErrorType = 614
// Domain group is invalid.
ErrAdsDomainGroupInvalid ErrorType = 615
// Domain group is forbidden.
ErrAdsDomainGroupForbidden ErrorType = 616
// Domain app is blocked.
ErrAdsDomainAppBlocked ErrorType = 617
// Domain group is not open.
ErrAdsDomainGroupNotOpen ErrorType = 618
// Domain group is not possible to be joined to adsweb.
ErrAdsDomainGroupNotPossibleJoined ErrorType = 619
// Domain group is blocked.
ErrAdsDomainGroupBlocked ErrorType = 620
// Domain group has restriction: links are forbidden.
ErrAdsDomainGroupLinksForbidden ErrorType = 621
// Domain group has restriction: excluded from search.
ErrAdsDomainGroupExcludedFromSearch ErrorType = 622
// Domain group has restriction: cover is forbidden.
ErrAdsDomainGroupCoverForbidden ErrorType = 623
// Domain group has wrong category.
ErrAdsDomainGroupWrongCategory ErrorType = 624
// Domain group has wrong name.
ErrAdsDomainGroupWrongName ErrorType = 625
// Domain group has low posts reach.
ErrAdsDomainGroupLowPostsReach ErrorType = 626
// Domain group has wrong class.
ErrAdsDomainGroupWrongClass ErrorType = 627
// Domain group is created recently.
ErrAdsDomainGroupCreatedRecently ErrorType = 628
// Object deleted.
ErrAdsObjectDeleted ErrorType = 629
// Lookalike request with same source already in progress.
ErrAdsLookalikeRequestAlreadyInProgress ErrorType = 630
// Max count of lookalike requests per day reached.
ErrAdsLookalikeRequestsLimit ErrorType = 631
// Given audience is too small.
ErrAdsAudienceTooSmall ErrorType = 632
// Given audience is too large.
ErrAdsAudienceTooLarge ErrorType = 633
// Lookalike request audience save already in progress.
ErrAdsLookalikeAudienceSaveAlreadyInProgress ErrorType = 634
// Max count of lookalike request audience saves per day reached.
ErrAdsLookalikeSavesLimit ErrorType = 635
// Max count of retargeting groups reached.
ErrAdsRetargetingGroupsLimit ErrorType = 636
// Domain group has active nemesis punishment.
ErrAdsDomainGroupActiveNemesisPunishment ErrorType = 637
// Cannot edit creator role.
ErrGroupChangeCreator ErrorType = 700
// User should be in club.
ErrGroupNotInClub ErrorType = 701
// Too many officers in club.
ErrGroupTooManyOfficers ErrorType = 702
// You need to enable 2FA for this action.
ErrGroupNeed2fa ErrorType = 703
// User needs to enable 2FA for this action.
ErrGroupHostNeed2fa ErrorType = 704
// Too many addresses in club.
ErrGroupTooManyAddresses ErrorType = 706
// "Application is not installed in community.
ErrGroupAppIsNotInstalledInCommunity ErrorType = 711
// Invite link is invalid - expired, deleted or not exists.
ErrGroupInvalidInviteLink ErrorType = 714
// This video is already added.
ErrVideoAlreadyAdded ErrorType = 800
// Comments for this video are closed.
ErrVideoCommentsClosed ErrorType = 801
// Can't send messages for users from blacklist.
ErrMessagesUserBlocked ErrorType = 900
// Can't send messages for users without permission.
ErrMessagesDenySend ErrorType = 901
// Can't send messages to this user due to their privacy settings.
ErrMessagesPrivacy ErrorType = 902
// Value of ts or pts is too old.
ErrMessagesTooOldPts ErrorType = 907
// Value of ts or pts is too new.
ErrMessagesTooNewPts ErrorType = 908
// Can't edit this message, because it's too old.
ErrMessagesEditExpired ErrorType = 909
// Can't sent this message, because it's too big.
ErrMessagesTooBig ErrorType = 910
// Keyboard format is invalid.
ErrMessagesKeyboardInvalid ErrorType = 911
// This is a chat bot feature, change this status in settings.
ErrMessagesChatBotFeature ErrorType = 912
// Too many forwarded messages.
ErrMessagesTooLongForwards ErrorType = 913
// Message is too long.
ErrMessagesTooLongMessage ErrorType = 914
// You don't have access to this chat.
ErrMessagesChatUserNoAccess ErrorType = 917
// You can't see invite link for this chat.
ErrMessagesCantSeeInviteLink ErrorType = 919
// Can't edit this kind of message.
ErrMessagesEditKindDisallowed ErrorType = 920
// Can't forward these messages.
ErrMessagesCantFwd ErrorType = 921
// Can't delete this message for everybody.
ErrMessagesCantDeleteForAll ErrorType = 924
// You are not admin of this chat.
ErrMessagesChatNotAdmin ErrorType = 925
// Chat does not exist.
ErrMessagesChatNotExist ErrorType = 927
// You can't change invite link for this chat.
ErrMessagesCantChangeInviteLink ErrorType = 931
// Your community can't interact with this peer.
ErrMessagesGroupPeerAccess ErrorType = 932
// User not found in chat.
ErrMessagesChatUserNotInChat ErrorType = 935
// Contact not found.
ErrMessagesContactNotFound ErrorType = 936
// Message request already send.
ErrMessagesMessageRequestAlreadySend ErrorType = 939
// Too many posts in messages.
ErrMessagesTooManyPosts ErrorType = 940
// Cannot pin one-time story.
ErrMessagesCantPinOneTimeStory ErrorType = 942
// Cannot use this intent.
ErrMessagesCantUseIntent ErrorType = 943
// Limits overflow for this intent.
ErrMessagesLimitIntent ErrorType = 944
// Chat was disabled.
ErrMessagesChatDisabled ErrorType = 945
// Chat not support.
ErrMessagesChatNotSupported ErrorType = 946
// Can't add user to chat, because user has no access to group.
ErrMessagesMemberAccessToGroupDenied ErrorType = 947
// Can't edit pinned message yet.
ErrMessagesEditPinned ErrorType = 949
// Can't send message, reply timed out.
ErrMessagesReplyTimedOut ErrorType = 950
// Invalid phone number.
ErrParamPhone ErrorType = 1000
// This phone number is used by another user.
ErrPhoneAlreadyUsed ErrorType = 1004
// Too many auth attempts, try again later.
ErrAuthFloodError ErrorType = 1105
// Processing.. Try later.
ErrAuthDelay ErrorType = 1112
// Invalid document id.
ErrParamDocID ErrorType = 1150
// Access to document deleting is denied.
ErrParamDocDeleteAccess ErrorType = 1151
// Invalid document title.
ErrParamDocTitle ErrorType = 1152
// Access to document is denied.
ErrParamDocAccess ErrorType = 1153
// Original photo was changed.
ErrPhotoChanged ErrorType = 1160
// Too many feed lists.
ErrTooManyLists ErrorType = 1170
// This achievement is already unlocked.
ErrAppsAlreadyUnlocked ErrorType = 1251
// Subscription not found.
ErrAppsSubscriptionNotFound ErrorType = 1256
// Subscription is in invalid status.
ErrAppsSubscriptionInvalidStatus ErrorType = 1257
// Invalid screen name.
ErrInvalidAddress ErrorType = 1260
// Catalog is not available for this user.
ErrCommunitiesCatalogDisabled ErrorType = 1310
// Catalog categories are not available for this user.
ErrCommunitiesCategoriesDisabled ErrorType = 1311
// Too late for restore.
ErrMarketRestoreTooLate ErrorType = 1400
// Comments for this market are closed.
ErrMarketCommentsClosed ErrorType = 1401
// Album not found.
ErrMarketAlbumNotFound ErrorType = 1402
// Item not found.
ErrMarketItemNotFound ErrorType = 1403
// Item already added to album.
ErrMarketItemAlreadyAdded ErrorType = 1404
// Too many items.
ErrMarketTooManyItems ErrorType = 1405
// Too many items in album.
ErrMarketTooManyItemsInAlbum ErrorType = 1406
// Too many albums.
ErrMarketTooManyAlbums ErrorType = 1407
// Item has bad links in description.
ErrMarketItemHasBadLinks ErrorType = 1408
// Shop not enabled.
ErrMarketShopNotEnabled ErrorType = 1409
// Variant not found.
ErrMarketVariantNotFound ErrorType = 1416
// Property not found.
ErrMarketPropertyNotFound ErrorType = 1417
// Grouping must have two or more items.
ErrMarketGroupingMustContainMoreThanOneItem ErrorType = 1425
// Item must have distinct properties.
ErrMarketGroupingItemsMustHaveDistinctProperties ErrorType = 1426
// Cart is empty.
ErrMarketOrdersNoCartItems ErrorType = 1427
// Specify width, length, height and weight all together.
ErrMarketInvalidDimensions ErrorType = 1429
// VK Pay status can not be changed.
ErrMarketCantChangeVkpayStatus ErrorType = 1430
// Market was already enabled in this group.
ErrMarketShopAlreadyEnabled ErrorType = 1431
// Market was already disabled in this group.
ErrMarketShopAlreadyDisabled ErrorType = 1432
// Invalid image crop format.
ErrMarketPhotosCropInvalidFormat ErrorType = 1433
// Crop bottom right corner is outside of the image.
ErrMarketPhotosCropOverflow ErrorType = 1434
// Crop size is less than the minimum.
ErrMarketPhotosCropSizeTooLow ErrorType = 1435
// Cart is empty.
ErrMarketCartEmpty ErrorType = 1427
// Specify width, length, height and weight all together.
ErrMarketSpecifyDimensions ErrorType = 1429
// VK Pay status can not be changed.
ErrVKPayStatus ErrorType = 1430
// Market was already enabled in this group.
ErrMarketAlreadyEnabled ErrorType = 1431
// Market was already disabled in this group.
ErrMarketAlreadyDisabled ErrorType = 1432
// Story has already expired.
ErrStoryExpired ErrorType = 1600
// Incorrect reply privacy.
ErrStoryIncorrectReplyPrivacy ErrorType = 1602
// Card not found.
ErrPrettyCardsCardNotFound ErrorType = 1900
// Too many cards.
ErrPrettyCardsTooManyCards ErrorType = 1901
// Card is connected to post.
ErrPrettyCardsCardIsConnectedToPost ErrorType = 1902
// Servers number limit is reached.
ErrCallbackServersLimit ErrorType = 2000
// Specified link is incorrect (can't find source).
ErrWallCheckLinkCantDetermineSource ErrorType = 3102
// Recaptcha needed.
ErrRecaptcha ErrorType = 3300
// Phone validation needed.
ErrPhoneValidation ErrorType = 3301
// Password validation needed.
ErrPasswordValidation ErrorType = 3302
// Otp app validation needed.
ErrOtpAppValidation ErrorType = 3303
// Email confirmation needed.
ErrEmailConfirmation ErrorType = 3304
// Assert votes.
ErrAssertVotes ErrorType = 3305
// Token extension required.
ErrTokenExtension ErrorType = 3609
// User is deactivated.
ErrUserDeactivated ErrorType = 3610
// Service is deactivated for user.
ErrServiceDeactivated ErrorType = 3611
// Can't set AliExpress tag to this type of object.
ErrAliExpressTag ErrorType = 3800
)
// ErrorSubtype is the subtype of an error.
type ErrorSubtype int
// Error returns the message of a ErrorSubtype.
func (e ErrorSubtype) Error() string {
return fmt.Sprintf("api: error with subcode %d", e)
}
// Error struct VK.
type Error struct {
Code ErrorType `json:"error_code"`
Subcode ErrorSubtype `json:"error_subcode"`
Message string `json:"error_msg"`
Text string `json:"error_text"`
CaptchaSID string `json:"captcha_sid"`
CaptchaImg string `json:"captcha_img"`
// In some cases VK requires to request action confirmation from the user
// (for Standalone apps only). Following error will be returned:
//
// Error code: 24
// Error text: Confirmation required
//
// Following parameter is transmitted with the error message as well:
//
// confirmation_text text of the message to be shown in the default
// confirmation window.
//
// The app should display the default confirmation window with text from
// confirmation_text and two buttons: "Continue" and "Cancel". If user
// confirms the action repeat the request with an extra parameter:
// confirm = 1.
//
// See https://vk.com/dev/need_confirmation
ConfirmationText string `json:"confirmation_text"`
// In some cases VK requires a user validation procedure. . As a result
// starting from API version 5.0 (for the older versions captcha_error
// will be requested) following error will be returned as a reply to any
// API request:
//
// Error code: 17
// Error text: Validation Required
//
// Following parameter is transmitted with an error message:
// redirect_uri a special address to open in a browser to pass the
// validation procedure.
//
// After passing the validation a user will be redirected to the service
// page:
//
// https://oauth.vk.com/blank.html#{Data required for validation}
//
// In case of successful validation following parameters will be
// transmitted after #:
//
// https://oauth.vk.com/blank.html#success=1&access_token={NEW USER TOKEN}&user_id={USER ID}
//
// If a token was not received by https a new secret will be transmitted
// as well.
//
// In case of unsuccessful validation following address is transmitted:
//
// https://oauth.vk.com/blank.html#fail=1
//
// See https://vk.com/dev/need_validation
RedirectURI string `json:"redirect_uri"`
RequestParams []object.BaseRequestParam `json:"request_params"`
}
// Error returns the message of a Error.
func (e Error) Error() string {
return "api: " + e.Message
}
// Is unwraps its first argument sequentially looking for an error that matches
// the second.
func (e Error) Is(target error) bool {
var tError *Error
if errors.As(target, &tError) {
return e.Code == tError.Code && e.Message == tError.Message
}
var tErrorType ErrorType
if errors.As(target, &tErrorType) {
return e.Code == tErrorType
}
return false
}
// ExecuteError struct.
//
// TODO: v3 Code is ErrorType.
type ExecuteError struct {
Method string `json:"method"`
Code int `json:"error_code"`
Msg string `json:"error_msg"`
}
// ExecuteErrors type.
type ExecuteErrors []ExecuteError
// Error returns the message of a ExecuteErrors.
func (e ExecuteErrors) Error() string {
return fmt.Sprintf("api: execute errors (%d)", len(e))
}
// InvalidContentType type.
type InvalidContentType struct {
ContentType string
}
// Error returns the message of a InvalidContentType.
func (e InvalidContentType) Error() string {
return "api: invalid content-type"
}
// UploadError type.
type UploadError struct {
Err string `json:"error"`
Code int `json:"error_code"`
Descr string `json:"error_descr"`
IsLogged bool `json:"error_is_logged"`
}
// Error returns the message of a UploadError.
func (e UploadError) Error() string {
if e.Err != "" {
return "api: " + e.Err
}
return fmt.Sprintf("api: upload code %d", e.Code)
}
// AdsError struct.
type AdsError struct {
Code ErrorType `json:"error_code"`
Desc string `json:"error_desc"`
}
// Error returns the message of a AdsError.
func (e AdsError) Error() string {
return "api: " + e.Desc
}
// Is unwraps its first argument sequentially looking for an error that matches
// the second.
func (e AdsError) Is(target error) bool {
var tAdsError *AdsError
if errors.As(target, &tAdsError) {
return e.Code == tAdsError.Code && e.Desc == tAdsError.Desc
}
var tErrorType ErrorType
if errors.As(target, &tErrorType) {
return e.Code == tErrorType
}
return false
}