hank
2019-06-20 e81c27b13950ca02baa879ae7b8108c0c3ef7fb0
commit | author | age
bad748 1 // Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
W 2 //
3 // You are hereby granted a non-exclusive, worldwide, royalty-free license to use,
4 // copy, modify, and distribute this software in source code or binary form for use
5 // in connection with the web services and APIs provided by Facebook.
6 //
7 // As with any software that integrates with the Facebook platform, your use of
8 // this software is subject to the Facebook Developer Principles and Policies
9 // [http://developers.facebook.com/policy/]. This copyright notice shall be
10 // included in all copies or substantial portions of the software.
11 //
12 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
14 // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
15 // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
16 // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
17 // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
18
19 #import <Foundation/Foundation.h>
20
e81c27 21 NS_ASSUME_NONNULL_BEGIN
H 22
13e53a 23 #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0
bad748 24
9febd9 25 /**
13e53a 26  The error domain for all errors from FBSDKCoreKit.
9febd9 27
W 28  Error codes from the SDK in the range 0-99 are reserved for this domain.
bad748 29  */
e81c27 30 FOUNDATION_EXPORT NSErrorDomain const FBSDKErrorDomain
H 31 NS_SWIFT_NAME(ErrorDomain);
13e53a 32
H 33 #else
bad748 34
9febd9 35 /**
13e53a 36  The error domain for all errors from FBSDKCoreKit.
H 37
38  Error codes from the SDK in the range 0-99 are reserved for this domain.
bad748 39  */
e81c27 40 FOUNDATION_EXPORT NSString *const FBSDKErrorDomain
H 41 NS_SWIFT_NAME(ErrorDomain);
bad748 42
13e53a 43 #endif
bad748 44
13e53a 45 #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_11_0
bad748 46
W 47 /*
48  @methodgroup error userInfo keys
49  */
50
9febd9 51 /**
13e53a 52  The userInfo key for the invalid collection for errors with FBSDKErrorInvalidArgument.
9febd9 53
W 54  If the invalid argument is a collection, the collection can be found with this key and the individual
bad748 55  invalid item can be found with FBSDKErrorArgumentValueKey.
W 56  */
e81c27 57 FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorArgumentCollectionKey
H 58 NS_SWIFT_NAME(ErrorArgumentCollectionKey);
bad748 59
9febd9 60 /**
13e53a 61  The userInfo key for the invalid argument name for errors with FBSDKErrorInvalidArgument.
bad748 62  */
e81c27 63 FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorArgumentNameKey
H 64 NS_SWIFT_NAME(ErrorArgumentNameKey);
bad748 65
9febd9 66 /**
13e53a 67  The userInfo key for the invalid argument value for errors with FBSDKErrorInvalidArgument.
bad748 68  */
e81c27 69 FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorArgumentValueKey
H 70 NS_SWIFT_NAME(ErrorArgumentValueKey);
bad748 71
9febd9 72 /**
13e53a 73  The userInfo key for the message for developers in NSErrors that originate from the SDK.
9febd9 74
W 75  The developer message will not be localized and is not intended to be presented within the app.
bad748 76  */
e81c27 77 FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorDeveloperMessageKey
H 78 NS_SWIFT_NAME(ErrorDeveloperMessageKey);
bad748 79
9febd9 80 /**
13e53a 81  The userInfo key describing a localized description that can be presented to the user.
bad748 82  */
e81c27 83 FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorLocalizedDescriptionKey
H 84 NS_SWIFT_NAME(ErrorLocalizedDescriptionKey);
bad748 85
9febd9 86 /**
13e53a 87  The userInfo key describing a localized title that can be presented to the user, used with `FBSDKLocalizedErrorDescriptionKey`.
bad748 88  */
e81c27 89 FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorLocalizedTitleKey
H 90 NS_SWIFT_NAME(ErrorLocalizedTitleKey);
bad748 91
W 92 /*
93  @methodgroup FBSDKGraphRequest error userInfo keys
94  */
95
9febd9 96 /**
13e53a 97  The userInfo key describing the error category, for error recovery purposes.
9febd9 98
W 99  See `FBSDKGraphErrorRecoveryProcessor` and `[FBSDKGraphRequest disableErrorRecovery]`.
bad748 100  */
e81c27 101 FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorKey
H 102 NS_SWIFT_NAME(GraphRequestErrorKey);
bad748 103
W 104 /*
13e53a 105  The userInfo key for the Graph API error code.
bad748 106  */
e81c27 107 FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorGraphErrorCodeKey
H 108 NS_SWIFT_NAME(GraphRequestErrorGraphErrorCodeKey);
bad748 109
W 110 /*
13e53a 111  The userInfo key for the Graph API error subcode.
bad748 112  */
e81c27 113 FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorGraphErrorSubcodeKey
H 114 NS_SWIFT_NAME(GraphRequestErrorGraphErrorSubcodeKey);
bad748 115
W 116 /*
13e53a 117  The userInfo key for the HTTP status code.
bad748 118  */
e81c27 119 FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorHTTPStatusCodeKey
H 120 NS_SWIFT_NAME(GraphRequestErrorHTTPStatusCodeKey);
bad748 121
W 122 /*
13e53a 123  The userInfo key for the raw JSON response.
bad748 124  */
e81c27 125 FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorParsedJSONResponseKey
H 126 NS_SWIFT_NAME(GraphRequestErrorParsedJSONResponseKey);
13e53a 127
H 128 #else
129
130 /*
131  @methodgroup error userInfo keys
132  */
bad748 133
9febd9 134 /**
13e53a 135  The userInfo key for the invalid collection for errors with FBSDKErrorInvalidArgument.
H 136
137  If the invalid argument is a collection, the collection can be found with this key and the individual
138  invalid item can be found with FBSDKErrorArgumentValueKey.
139  */
e81c27 140 FOUNDATION_EXPORT NSString *const FBSDKErrorArgumentCollectionKey
H 141 NS_SWIFT_NAME(ErrorArgumentCollectionKey);
13e53a 142
H 143 /**
144  The userInfo key for the invalid argument name for errors with FBSDKErrorInvalidArgument.
145  */
e81c27 146 FOUNDATION_EXPORT NSString *const FBSDKErrorArgumentNameKey
H 147 NS_SWIFT_NAME(ErrorArgumentNameKey);
13e53a 148
H 149 /**
150  The userInfo key for the invalid argument value for errors with FBSDKErrorInvalidArgument.
151  */
e81c27 152 FOUNDATION_EXPORT NSString *const FBSDKErrorArgumentValueKey
H 153 NS_SWIFT_NAME(ErrorArgumentValueKey);
13e53a 154
H 155 /**
156  The userInfo key for the message for developers in NSErrors that originate from the SDK.
157
158  The developer message will not be localized and is not intended to be presented within the app.
159  */
e81c27 160 FOUNDATION_EXPORT NSString *const FBSDKErrorDeveloperMessageKey
H 161 NS_SWIFT_NAME(ErrorDeveloperMessageKey);
13e53a 162
H 163 /**
164  The userInfo key describing a localized description that can be presented to the user.
165  */
e81c27 166 FOUNDATION_EXPORT NSString *const FBSDKErrorLocalizedDescriptionKey
H 167 NS_SWIFT_NAME(ErrorLocalizedDescriptionKey);
13e53a 168
H 169 /**
170  The userInfo key describing a localized title that can be presented to the user, used with `FBSDKLocalizedErrorDescriptionKey`.
171  */
e81c27 172 FOUNDATION_EXPORT NSString *const FBSDKErrorLocalizedTitleKey
H 173 NS_SWIFT_NAME(ErrorLocalizedTitleKey);
13e53a 174
H 175 /*
176  @methodgroup FBSDKGraphRequest error userInfo keys
177  */
178
179 /**
180  The userInfo key describing the error category, for error recovery purposes.
181
182  See `FBSDKGraphErrorRecoveryProcessor` and `[FBSDKGraphRequest disableErrorRecovery]`.
183  */
e81c27 184 FOUNDATION_EXPORT NSString *const FBSDKGraphRequestErrorKey
H 185 NS_SWIFT_NAME(GraphRequestErrorKey);
13e53a 186
H 187 /*
188  The userInfo key for the Graph API error code.
189  */
e81c27 190 FOUNDATION_EXPORT NSString *const FBSDKGraphRequestErrorGraphErrorCodeKey
H 191 NS_SWIFT_NAME(GraphRequestErrorGraphErrorCodeKey);
13e53a 192
H 193 /*
194  The userInfo key for the Graph API error subcode.
195  */
e81c27 196 FOUNDATION_EXPORT NSString *const FBSDKGraphRequestErrorGraphErrorSubcodeKey
H 197 NS_SWIFT_NAME(GraphRequestErrorGraphErrorSubcodeKey);
13e53a 198
H 199 /*
200  The userInfo key for the HTTP status code.
201  */
e81c27 202 FOUNDATION_EXPORT NSString *const FBSDKGraphRequestErrorHTTPStatusCodeKey
H 203 NS_SWIFT_NAME(GraphRequestErrorHTTPStatusCodeKey);
13e53a 204
H 205 /*
206  The userInfo key for the raw JSON response.
207  */
e81c27 208 FOUNDATION_EXPORT NSString *const FBSDKGraphRequestErrorParsedJSONResponseKey
H 209 NS_SWIFT_NAME(GraphRequestErrorParsedJSONResponseKey);
13e53a 210
H 211 #endif
e81c27 212
H 213 /*
214  @methodgroup Common Code Block typedefs
215  */
216
217 /**
218  Success Block
219  */
220 typedef void (^FBSDKCodeBlock)(void)
221 NS_SWIFT_NAME(CodeBlock);
222
223 /**
224  Error Block
225  */
226 typedef void (^FBSDKErrorBlock)(NSError *_Nullable error)
227 NS_SWIFT_NAME(ErrorBlock);
228
229 /**
230  Success Block
231  */
232 typedef void (^FBSDKSuccessBlock)(BOOL success, NSError *_Nullable error)
233 NS_SWIFT_NAME(SuccessBlock);
234
235 /*
236  @methodgroup Enums
237  */
13e53a 238
H 239 #ifndef NS_ERROR_ENUM
240 #define NS_ERROR_ENUM(_domain, _name) \
241 enum _name: NSInteger _name; \
242 enum __attribute__((ns_error_domain(_domain))) _name: NSInteger
243 #endif
244
245 /**
246  FBSDKError
247  Error codes for FBSDKErrorDomain.
248  */
249 typedef NS_ERROR_ENUM(FBSDKErrorDomain, FBSDKError)
250 {
251   /**
252    Reserved.
253    */
254   FBSDKErrorReserved = 0,
255
256   /**
257    The error code for errors from invalid encryption on incoming encryption URLs.
258    */
259   FBSDKErrorEncryption,
260
261   /**
262    The error code for errors from invalid arguments to SDK methods.
263    */
264   FBSDKErrorInvalidArgument,
265
266   /**
267    The error code for unknown errors.
268    */
269   FBSDKErrorUnknown,
270
271   /**
272    A request failed due to a network error. Use NSUnderlyingErrorKey to retrieve
273    the error object from the NSURLSession for more information.
274    */
275   FBSDKErrorNetwork,
276
277   /**
278    The error code for errors encountered during an App Events flush.
279    */
280   FBSDKErrorAppEventsFlush,
281
282   /**
283    An endpoint that returns a binary response was used with FBSDKGraphRequestConnection.
284
285    Endpoints that return image/jpg, etc. should be accessed using NSURLRequest
286    */
287   FBSDKErrorGraphRequestNonTextMimeTypeReturned,
288
289   /**
290    The operation failed because the server returned an unexpected response.
291
292    You can get this error if you are not using the most recent SDK, or you are accessing a version of the
293    Graph API incompatible with the current SDK.
294    */
295   FBSDKErrorGraphRequestProtocolMismatch,
296
297   /**
298    The Graph API returned an error.
299
300    See below for useful userInfo keys (beginning with FBSDKGraphRequestError*)
301    */
302   FBSDKErrorGraphRequestGraphAPI,
303
304   /**
305    The specified dialog configuration is not available.
306
307    This error may signify that the configuration for the dialogs has not yet been downloaded from the server
308    or that the dialog is unavailable.  Subsequent attempts to use the dialog may succeed as the configuration is loaded.
309    */
310   FBSDKErrorDialogUnavailable,
311
312   /**
313    Indicates an operation failed because a required access token was not found.
314    */
315   FBSDKErrorAccessTokenRequired,
316
317   /**
318    Indicates an app switch (typically for a dialog) failed because the destination app is out of date.
319    */
320   FBSDKErrorAppVersionUnsupported,
321
322   /**
323    Indicates an app switch to the browser (typically for a dialog) failed.
324    */
325   FBSDKErrorBrowserUnavailable,
e81c27 326 } NS_SWIFT_NAME(CoreError);
13e53a 327
H 328 /**
329  FBSDKGraphRequestError
330  Describes the category of Facebook error. See `FBSDKGraphRequestErrorKey`.
331  */
332 typedef NS_ENUM(NSUInteger, FBSDKGraphRequestError)
333 {
334   /** The default error category that is not known to be recoverable. Check `FBSDKLocalizedErrorDescriptionKey` for a user facing message. */
335   FBSDKGraphRequestErrorOther = 0,
336   /** Indicates the error is temporary (such as server throttling). While a recoveryAttempter will be provided with the error instance, the attempt is guaranteed to succeed so you can simply retry the operation if you do not want to present an alert.  */
337   FBSDKGraphRequestErrorTransient = 1,
338   /** Indicates the error can be recovered (such as requiring a login). A recoveryAttempter will be provided with the error instance that can take UI action. */
339   FBSDKGraphRequestErrorRecoverable = 2
e81c27 340 } NS_SWIFT_NAME(GraphRequestError);
13e53a 341
H 342 /**
343  a formal protocol very similar to the informal protocol NSErrorRecoveryAttempting
bad748 344  */
e81c27 345 NS_SWIFT_UNAVAILABLE("")
bad748 346 @protocol FBSDKErrorRecoveryAttempting<NSObject>
W 347
9febd9 348 /**
13e53a 349  attempt the recovery
H 350  @param error the error
351  @param recoveryOptionIndex the selected option index
352  @param delegate the delegate
353  @param didRecoverSelector the callback selector, see discussion.
354  @param contextInfo context info to pass back to callback selector, see discussion.
9febd9 355
W 356
bad748 357  Given that an error alert has been presented document-modally to the user, and the user has chosen one of the error's recovery options, attempt recovery from the error, and send the selected message to the specified delegate. The option index is an index into the error's array of localized recovery options. The method selected by didRecoverSelector must have the same signature as:
W 358
359  - (void)didPresentErrorWithRecovery:(BOOL)didRecover contextInfo:(void *)contextInfo;
360
361  The value passed for didRecover must be YES if error recovery was completely successful, NO otherwise.
362  */
e81c27 363 - (void)attemptRecoveryFromError:(NSError *)error
H 364                      optionIndex:(NSUInteger)recoveryOptionIndex
365                         delegate:(nullable id)delegate
366               didRecoverSelector:(SEL)didRecoverSelector
367                      contextInfo:(nullable void *)contextInfo;
bad748 368 @end
13e53a 369
e81c27 370 NS_ASSUME_NONNULL_END