diff --git a/src/Contacts/ContactsUpdater.h b/src/Contacts/ContactsUpdater.h index 255052e93..cf8a6a786 100644 --- a/src/Contacts/ContactsUpdater.h +++ b/src/Contacts/ContactsUpdater.h @@ -6,6 +6,9 @@ NS_ASSUME_NONNULL_BEGIN +extern NSString *const kContactsUpdaterErrorDomain; +extern const NSInteger kContactsUpdaterRateLimitErrorCode; + @class Contact; @interface ContactsUpdater : NSObject diff --git a/src/Contacts/ContactsUpdater.m b/src/Contacts/ContactsUpdater.m index 4373c0bf5..58652de55 100644 --- a/src/Contacts/ContactsUpdater.m +++ b/src/Contacts/ContactsUpdater.m @@ -14,6 +14,9 @@ NS_ASSUME_NONNULL_BEGIN +NSString *const kContactsUpdaterErrorDomain = @"kContactsUpdaterErrorDomain"; +const NSInteger kContactsUpdaterRateLimitErrorCode = 413; + @implementation ContactsUpdater + (instancetype)sharedUpdater { @@ -206,7 +209,15 @@ NS_ASSUME_NONNULL_BEGIN success([NSSet setWithArray:attributesForIdentifier.allKeys]); } failure:^(NSURLSessionDataTask *task, NSError *error) { - failure(error); + NSHTTPURLResponse *response = (NSHTTPURLResponse *)task.response; + if (response.statusCode == 413) { + NSString *const kContactsUpdaterErrorDomain = @"kContactsUpdaterErrorDomain"; + failure([NSError errorWithDomain:kContactsUpdaterErrorDomain + code:kContactsUpdaterRateLimitErrorCode + userInfo:nil]); + } else { + failure(error); + } }]; }); }