// // VKError.h // // Copyright (c) 2014 VK.com // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in // the Software without restriction, including without limitation the rights to // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of // the Software, and to permit persons to whom the Software is furnished to do so, // subject to the following conditions: // // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #import #import "VKObject.h" #import "VKApiConst.h" static int const VK_API_ERROR = -101; static int const VK_API_CANCELED = -102; static int const VK_API_REQUEST_NOT_PREPARED = -103; static int const VK_RESPONSE_STRING_PARSING_ERROR = -104; static int const VK_AUTHORIZE_CONTROLLER_CANCEL = -105; @class VKRequest; /** Class for presenting VK SDK and VK API errors */ @interface VKError : VKObject /// Contains system HTTP error @property(nonatomic, strong) NSError *httpError; /// Describes API error @property(nonatomic, strong) VKError *apiError; /// Request which caused error @property(nonatomic, strong) VKRequest *request; /// May contains such errors:\n HTTP status code if HTTP error occured;\n VK_API_ERROR if API error occured;\n VK_API_CANCELED if request was canceled;\n VK_API_REQUEST_NOT_PREPARED if error occured while preparing request; @property(nonatomic, assign) NSInteger errorCode; /// API error message @property(nonatomic, strong) NSString *errorMessage; /// Reason for authorization fail @property(nonatomic, strong) NSString *errorReason; // Localized error text from server if there is one @property(nonatomic, strong) NSString *errorText; /// API parameters passed to request @property(nonatomic, strong) NSDictionary *requestParams; /// Captcha identifier for captcha-check @property(nonatomic, strong) NSString *captchaSid; /// Image for captcha-check @property(nonatomic, strong) NSString *captchaImg; /// Redirection address if validation check required @property(nonatomic, strong) NSString *redirectUri; @property(nonatomic, strong) id json; /** Generate new error with code @param errorCode positive if it's an HTTP error. Negative if it's API or SDK error */ + (instancetype)errorWithCode:(NSInteger)errorCode; /** Generate API error from JSON @param JSON Json description of VK API error */ + (instancetype)errorWithJson:(id)JSON; /** Generate API error from HTTP-query @param queryParams key-value parameters */ + (instancetype)errorWithQuery:(NSDictionary *)queryParams; /** Repeats failed captcha request with user entered answer to captcha @param userEnteredCode answer for captcha */ - (void)answerCaptcha:(NSString *)userEnteredCode; @end