adium 2187:37f08e4d8a29: Convert Twitter code over to using `uns...
commits at adium.im
commits at adium.im
Thu May 14 23:57:38 UTC 2009
details: http://hg.adium.im/adium/rev/37f08e4d8a29
revision: 2187:37f08e4d8a29
author: Zachary West <zacw at adium.im>
date: Thu May 14 19:57:10 2009 -0400
Convert Twitter code over to using `unsigned long long` instead of signed integers. Fixes #12025.
Twitter status IDs are getting close to rolling over the signed integer value. Super-future-proof this by going to unsigned 64-bit numbers.
diffstat:
Frameworks/AIUtilities Framework/Source/AIStringAdditions.h | 2 +
Frameworks/AIUtilities Framework/Source/AIStringAdditions.m | 5 +
Plugins/Twitter Plugin/AITwitterAccount.m | 24 ++++----
Plugins/Twitter Plugin/AITwitterReplyWindowController.m | 3 +-
Plugins/Twitter Plugin/MGTwitterEngine/MGTwitterEngine.h | 22 +++---
Plugins/Twitter Plugin/MGTwitterEngine/MGTwitterEngine.m | 44 +++++++-------
6 files changed, 54 insertions(+), 46 deletions(-)
diffs (370 lines):
diff -r 5ac76de478a0 -r 37f08e4d8a29 Frameworks/AIUtilities Framework/Source/AIStringAdditions.h
--- a/Frameworks/AIUtilities Framework/Source/AIStringAdditions.h Thu May 14 16:35:53 2009 -0700
+++ b/Frameworks/AIUtilities Framework/Source/AIStringAdditions.h Thu May 14 19:57:10 2009 -0400
@@ -127,4 +127,6 @@
- (BOOL) isCaseInsensitivelyEqualToString:(NSString *)other;
+- (unsigned long long)unsignedLongLongValue;
+
@end
diff -r 5ac76de478a0 -r 37f08e4d8a29 Frameworks/AIUtilities Framework/Source/AIStringAdditions.m
--- a/Frameworks/AIUtilities Framework/Source/AIStringAdditions.m Thu May 14 16:35:53 2009 -0700
+++ b/Frameworks/AIUtilities Framework/Source/AIStringAdditions.m Thu May 14 19:57:10 2009 -0400
@@ -816,4 +816,9 @@
return [self caseInsensitiveCompare:other] == NSOrderedSame;
}
+- (unsigned long long)unsignedLongLongValue
+{
+ return [[NSDecimalNumber decimalNumberWithString:self] unsignedLongLongValue];
+}
+
@end
diff -r 5ac76de478a0 -r 37f08e4d8a29 Plugins/Twitter Plugin/AITwitterAccount.m
--- a/Plugins/Twitter Plugin/AITwitterAccount.m Thu May 14 16:35:53 2009 -0700
+++ b/Plugins/Twitter Plugin/AITwitterAccount.m Thu May 14 19:57:10 2009 -0400
@@ -210,7 +210,7 @@
}
- NSTimeInterval updateInterval = [[self preferenceForKey:TWITTER_PREFERENCE_UPDATE_INTERVAL group:TWITTER_PREFERENCE_GROUP_UPDATES] intValue] * 60;
+ NSTimeInterval updateInterval = [[self preferenceForKey:TWITTER_PREFERENCE_UPDATE_INTERVAL group:TWITTER_PREFERENCE_GROUP_UPDATES] integerValue] * 60;
if(updateInterval > 0) {
[updateTimer invalidate];
@@ -429,7 +429,7 @@
NSString *requestID;
if(inContentMessage.chat.isGroupChat) {
- NSInteger replyID = [[inContentMessage.chat valueForProperty:@"TweetInReplyToStatusID"] integerValue];
+ NSInteger replyID = [[inContentMessage.chat valueForProperty:@"TweetInReplyToStatusID"] unsignedLongLongValue];
requestID = [twitterEngine sendUpdate:inContentMessage.encodedMessage
inReplyTo:replyID];
@@ -1055,7 +1055,7 @@
// Pull direct messages
lastID = [[self preferenceForKey:TWITTER_PREFERENCE_DM_LAST_ID
- group:TWITTER_PREFERENCE_GROUP_UPDATES] intValue];
+ group:TWITTER_PREFERENCE_GROUP_UPDATES] unsignedLongLongValue];
requestID = [twitterEngine getDirectMessagesSinceID:lastID startingAtPage:1];
@@ -1069,7 +1069,7 @@
// Pull followed timeline
lastID = [[self preferenceForKey:TWITTER_PREFERENCE_TIMELINE_LAST_ID
- group:TWITTER_PREFERENCE_GROUP_UPDATES] intValue];
+ group:TWITTER_PREFERENCE_GROUP_UPDATES] unsignedLongLongValue];
requestID = [twitterEngine getFollowedTimelineFor:nil
sinceID:lastID
@@ -1086,7 +1086,7 @@
// Pull the replies feed
lastID = [[self preferenceForKey:TWITTER_PREFERENCE_REPLIES_LAST_ID
- group:TWITTER_PREFERENCE_GROUP_UPDATES] intValue];
+ group:TWITTER_PREFERENCE_GROUP_UPDATES] unsignedLongLongValue];
requestID = [twitterEngine getRepliesSinceID:lastID startingAtPage:1];
@@ -1192,7 +1192,7 @@
*/
- (void)toggleFavoriteTweet:(NSString *)tweetID
{
- NSString *requestID = [twitterEngine markUpdate:[tweetID intValue] asFavorite:YES];
+ NSString *requestID = [twitterEngine markUpdate:[tweetID unsignedLongLongValue] asFavorite:YES];
if (requestID) {
[self setRequestType:AITwitterFavoriteYes
@@ -1214,7 +1214,7 @@
*/
- (void)destroyTweet:(NSString *)tweetID
{
- NSString *requestID = [twitterEngine deleteUpdate:[tweetID intValue]];
+ NSString *requestID = [twitterEngine deleteUpdate:[tweetID unsignedLongLongValue]];
if(requestID) {
[self setRequestType:AITwitterDestroyStatus
@@ -1237,7 +1237,7 @@
- (void)destroyDirectMessage:(NSString *)messageID
forUser:(NSString *)userID
{
- NSString *requestID = [twitterEngine deleteDirectMessage:[messageID intValue]];
+ NSString *requestID = [twitterEngine deleteDirectMessage:[messageID unsignedLongLongValue]];
AIListContact *contact = [self contactWithUID:userID];
if(requestID) {
@@ -1770,7 +1770,7 @@
BOOL addAsFavorite = ([self requestTypeForRequestID:identifier] == AITwitterFavoriteNo);
NSString *tweetID = [[self dictionaryForRequestID:identifier] objectForKey:@"tweetID"];
- NSString *requestID = [twitterEngine markUpdate:[tweetID intValue]
+ NSString *requestID = [twitterEngine markUpdate:[tweetID unsignedLongLongValue]
asFavorite:addAsFavorite];
if (requestID) {
@@ -1887,7 +1887,7 @@
if ([self requestTypeForRequestID:identifier] == AITwitterUpdateFollowedTimeline) {
requestID = [twitterEngine getFollowedTimelineFor:nil
- sinceID:[lastID intValue]
+ sinceID:[lastID unsignedLongLongValue]
startingAtPage:nextPage
count:TWITTER_UPDATE_TIMELINE_COUNT];
@@ -1906,7 +1906,7 @@
}
} else if ([self requestTypeForRequestID:identifier] == AITwitterUpdateReplies) {
- requestID = [twitterEngine getRepliesSinceID:[lastID intValue] startingAtPage:nextPage];
+ requestID = [twitterEngine getRepliesSinceID:[lastID unsignedLongLongValue] startingAtPage:nextPage];
AILogWithSignature(@"%@ Pulling additional replies page %d", self, nextPage);
@@ -2081,7 +2081,7 @@
if(nextPageNecessary) {
NSInteger nextPage = [[[self dictionaryForRequestID:identifier] objectForKey:@"Page"] intValue] + 1;
- NSString *requestID = [twitterEngine getDirectMessagesSinceID:[lastID intValue]
+ NSString *requestID = [twitterEngine getDirectMessagesSinceID:[lastID unsignedLongLongValue]
startingAtPage:nextPage];
AILogWithSignature(@"%@ Pulling additional DM page %d", self, nextPage);
diff -r 5ac76de478a0 -r 37f08e4d8a29 Plugins/Twitter Plugin/AITwitterReplyWindowController.m
--- a/Plugins/Twitter Plugin/AITwitterReplyWindowController.m Thu May 14 16:35:53 2009 -0700
+++ b/Plugins/Twitter Plugin/AITwitterReplyWindowController.m Thu May 14 19:57:10 2009 -0400
@@ -19,6 +19,7 @@
#import "AIURLHandlerPlugin.h"
#import <Adium/AIAccount.h>
#import <Adium/AIService.h>
+#import <AIUtilities/AIStringAdditions.h>
@implementation AITwitterReplyWindowController
@@ -79,7 +80,7 @@
- (IBAction)reply:(id)sender
{
if (([textField_usernameOrTweetURL.stringValue rangeOfCharacterFromSet:[account.service.allowedCharacters invertedSet]].location != NSNotFound) ||
- (![[NSString stringWithFormat:@"%d", [textField_statusID.stringValue intValue]] isEqualToString:textField_statusID.stringValue])) {
+ (![[NSString stringWithFormat:@"%qu", [textField_statusID.stringValue unsignedLongLongValue]] isEqualToString:textField_statusID.stringValue])) {
NSBeep();
} else if (textField_usernameOrTweetURL.stringValue && textField_statusID.stringValue) {
diff -r 5ac76de478a0 -r 37f08e4d8a29 Plugins/Twitter Plugin/MGTwitterEngine/MGTwitterEngine.h
--- a/Plugins/Twitter Plugin/MGTwitterEngine/MGTwitterEngine.h Thu May 14 16:35:53 2009 -0700
+++ b/Plugins/Twitter Plugin/MGTwitterEngine/MGTwitterEngine.h Thu May 14 19:57:10 2009 -0400
@@ -92,22 +92,22 @@
// Retrieving updates
- (NSString *)getFollowedTimelineFor:(NSString *)username since:(NSDate *)date startingAtPage:(int)pageNum;
- (NSString *)getFollowedTimelineFor:(NSString *)username since:(NSDate *)date startingAtPage:(int)pageNum count:(int)count; // max 200
-- (NSString *)getFollowedTimelineFor:(NSString *)username sinceID:(int)updateID startingAtPage:(int)pageNum count:(int)count; // max 200
+- (NSString *)getFollowedTimelineFor:(NSString *)username sinceID:(unsigned long long)updateID startingAtPage:(int)pageNum count:(int)count; // max 200
- (NSString *)getUserTimelineFor:(NSString *)username since:(NSDate *)date count:(int)numUpdates; // max 200
- (NSString *)getUserTimelineFor:(NSString *)username since:(NSDate *)date startingAtPage:(int)pageNum count:(int)numUpdates; // max 200
-- (NSString *)getUserTimelineFor:(NSString *)username sinceID:(int)updateID startingAtPage:(int)pageNum count:(int)numUpdates; // max 200
+- (NSString *)getUserTimelineFor:(NSString *)username sinceID:(unsigned long long)updateID startingAtPage:(int)pageNum count:(int)numUpdates; // max 200
- (NSString *)getUserUpdatesArchiveStartingAtPage:(int)pageNum; // 80 per page
-- (NSString *)getPublicTimelineSinceID:(int)updateID;
-- (NSString *)getRepliesSinceID:(int)updateID startingAtPage:(int)pageNum;
+- (NSString *)getPublicTimelineSinceID:(unsigned long long)updateID;
+- (NSString *)getRepliesSinceID:(unsigned long long)updateID startingAtPage:(int)pageNum;
- (NSString *)getRepliesStartingAtPage:(int)pageNum; // sent TO this user
- (NSString *)getFavoriteUpdatesFor:(NSString *)username startingAtPage:(int)pageNum;
-- (NSString *)getUpdate:(int)updateID;
+- (NSString *)getUpdate:(unsigned long long)updateID;
// Retrieving direct messages
- (NSString *)getDirectMessagesSince:(NSDate *)date startingAtPage:(int)pageNum; // sent TO this user
-- (NSString *)getDirectMessagesSinceID:(int)updateID startingAtPage:(int)pageNum; // sent TO this user
+- (NSString *)getDirectMessagesSinceID:(unsigned long long)updateID startingAtPage:(int)pageNum; // sent TO this user
- (NSString *)getSentDirectMessagesSince:(NSDate *)date startingAtPage:(int)pageNum; // sent BY this user
-- (NSString *)getSentDirectMessagesSinceID:(int)updateID startingAtPage:(int)pageNum; // sent BY this user
+- (NSString *)getSentDirectMessagesSinceID:(unsigned long long)updateID startingAtPage:(int)pageNum; // sent BY this user
// Retrieving user information
- (NSString *)getUserInformationFor:(NSString *)username;
@@ -125,13 +125,13 @@
// Sending and editing updates
- (NSString *)sendUpdate:(NSString *)status;
-- (NSString *)sendUpdate:(NSString *)status inReplyTo:(int)updateID;
-- (NSString *)deleteUpdate:(int)updateID; // this user must be the AUTHOR
-- (NSString *)markUpdate:(int)updateID asFavorite:(BOOL)flag;
+- (NSString *)sendUpdate:(NSString *)status inReplyTo:(unsigned long long)updateID;
+- (NSString *)deleteUpdate:(unsigned long long)updateID; // this user must be the AUTHOR
+- (NSString *)markUpdate:(unsigned long long)updateID asFavorite:(BOOL)flag;
// Sending and editing direct messages
- (NSString *)sendDirectMessage:(NSString *)message to:(NSString *)username;
-- (NSString *)deleteDirectMessage:(int)updateID; // this user must be the RECIPIENT
+- (NSString *)deleteDirectMessage:(unsigned long long)updateID; // this user must be the RECIPIENT
// Adium OAuth additions
@property (readwrite, nonatomic) BOOL useOAuth;
diff -r 5ac76de478a0 -r 37f08e4d8a29 Plugins/Twitter Plugin/MGTwitterEngine/MGTwitterEngine.m
--- a/Plugins/Twitter Plugin/MGTwitterEngine/MGTwitterEngine.m Thu May 14 16:35:53 2009 -0700
+++ b/Plugins/Twitter Plugin/MGTwitterEngine/MGTwitterEngine.m Thu May 14 19:57:10 2009 -0400
@@ -958,13 +958,13 @@
}
-- (NSString *)getFollowedTimelineFor:(NSString *)username sinceID:(int)updateID startingAtPage:(int)pageNum count:(int)count
+- (NSString *)getFollowedTimelineFor:(NSString *)username sinceID:(unsigned long long)updateID startingAtPage:(int)pageNum count:(int)count
{
NSString *path = @"statuses/friends_timeline.xml";
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithCapacity:0];
if (updateID > 0) {
- [params setObject:[NSString stringWithFormat:@"%d", updateID] forKey:@"since_id"];
+ [params setObject:[NSString stringWithFormat:@"%qu", updateID] forKey:@"since_id"];
}
if (pageNum > 0) {
[params setObject:[NSString stringWithFormat:@"%d", pageNum] forKey:@"page"];
@@ -1015,13 +1015,13 @@
}
-- (NSString *)getUserTimelineFor:(NSString *)username sinceID:(int)updateID startingAtPage:(int)pageNum count:(int)numUpdates
+- (NSString *)getUserTimelineFor:(NSString *)username sinceID:(unsigned long long)updateID startingAtPage:(int)pageNum count:(int)numUpdates
{
NSString *path = @"statuses/user_timeline.xml";
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithCapacity:0];
if (updateID > 0) {
- [params setObject:[NSString stringWithFormat:@"%d", updateID] forKey:@"since_id"];
+ [params setObject:[NSString stringWithFormat:@"%qu", updateID] forKey:@"since_id"];
}
if (pageNum > 0) {
[params setObject:[NSString stringWithFormat:@"%d", pageNum] forKey:@"page"];
@@ -1054,13 +1054,13 @@
}
-- (NSString *)getPublicTimelineSinceID:(int)updateID
+- (NSString *)getPublicTimelineSinceID:(unsigned long long)updateID
{
NSString *path = @"statuses/public_timeline.xml";
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithCapacity:0];
if (updateID > 0) {
- [params setObject:[NSString stringWithFormat:@"%d", updateID] forKey:@"since_id"];
+ [params setObject:[NSString stringWithFormat:@"%qu", updateID] forKey:@"since_id"];
}
return [self _sendRequestWithMethod:nil path:path queryParameters:params body:nil
@@ -1101,9 +1101,9 @@
}
-- (NSString *)getUpdate:(int)updateID
+- (NSString *)getUpdate:(unsigned long long)updateID
{
- NSString *path = [NSString stringWithFormat:@"statuses/show/%d.xml", updateID];
+ NSString *path = [NSString stringWithFormat:@"statuses/show/%qu.xml", updateID];
return [self _sendRequestWithMethod:nil path:path queryParameters:nil body:nil
requestType:MGTwitterStatusesRequest
@@ -1132,13 +1132,13 @@
}
-- (NSString *)getDirectMessagesSinceID:(int)updateID startingAtPage:(int)pageNum
+- (NSString *)getDirectMessagesSinceID:(unsigned long long)updateID startingAtPage:(int)pageNum
{
NSString *path = @"direct_messages.xml";
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithCapacity:0];
if (updateID > 0) {
- [params setObject:[NSString stringWithFormat:@"%d", updateID] forKey:@"since_id"];
+ [params setObject:[NSString stringWithFormat:@"%qu", updateID] forKey:@"since_id"];
}
if (pageNum > 0) {
[params setObject:[NSString stringWithFormat:@"%d", pageNum] forKey:@"page"];
@@ -1168,13 +1168,13 @@
}
-- (NSString *)getSentDirectMessagesSinceID:(int)updateID startingAtPage:(int)pageNum
+- (NSString *)getSentDirectMessagesSinceID:(unsigned long long)updateID startingAtPage:(int)pageNum
{
NSString *path = @"direct_messages/sent.xml";
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithCapacity:0];
if (updateID > 0) {
- [params setObject:[NSString stringWithFormat:@"%d", updateID] forKey:@"since_id"];
+ [params setObject:[NSString stringWithFormat:@"%qu", updateID] forKey:@"since_id"];
}
if (pageNum > 0) {
[params setObject:[NSString stringWithFormat:@"%d", pageNum] forKey:@"page"];
@@ -1270,7 +1270,7 @@
}
-- (NSString *)sendUpdate:(NSString *)status inReplyTo:(int)updateID
+- (NSString *)sendUpdate:(NSString *)status inReplyTo:(unsigned long long)updateID
{
if (!status) {
return nil;
@@ -1286,7 +1286,7 @@
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithCapacity:0];
[params setObject:trimmedText forKey:@"status"];
if (updateID > 0) {
- [params setObject:[NSString stringWithFormat:@"%d", updateID] forKey:@"in_reply_to_status_id"];
+ [params setObject:[NSString stringWithFormat:@"%qu", updateID] forKey:@"in_reply_to_status_id"];
}
NSString *body = [self _queryStringWithBase:nil parameters:params prefixed:NO];
@@ -1297,9 +1297,9 @@
}
-- (NSString *)deleteUpdate:(int)updateID
+- (NSString *)deleteUpdate:(unsigned long long)updateID
{
- NSString *path = [NSString stringWithFormat:@"statuses/destroy/%d.xml", updateID];
+ NSString *path = [NSString stringWithFormat:@"statuses/destroy/%qu.xml", updateID];
return [self _sendRequestWithMethod:HTTP_POST_METHOD path:path queryParameters:nil body:nil
requestType:MGTwitterAccountRequest
@@ -1307,9 +1307,9 @@
}
-- (NSString *)markUpdate:(int)updateID asFavorite:(BOOL)flag
+- (NSString *)markUpdate:(unsigned long long)updateID asFavorite:(BOOL)flag
{
- NSString *path = [NSString stringWithFormat:@"favorites/%@/%d.xml",
+ NSString *path = [NSString stringWithFormat:@"favorites/%@/%qu.xml",
(flag) ? @"create" : @"destroy" ,
updateID];
@@ -1347,9 +1347,9 @@
}
-- (NSString *)deleteDirectMessage:(int)updateID
+- (NSString *)deleteDirectMessage:(unsigned long long)updateID
{
- NSString *path = [NSString stringWithFormat:@"direct_messages/destroy/%d.xml", updateID];
+ NSString *path = [NSString stringWithFormat:@"direct_messages/destroy/%qu.xml", updateID];
return [self _sendRequestWithMethod:HTTP_POST_METHOD path:path queryParameters:nil body:nil
requestType:MGTwitterAccountRequest
@@ -1373,13 +1373,13 @@
}
-- (NSString *)getRepliesSinceID:(int)updateID startingAtPage:(int)pageNum
+- (NSString *)getRepliesSinceID:(unsigned long long)updateID startingAtPage:(int)pageNum
{
NSString *path = @"statuses/replies.xml";
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithCapacity:0];
if (updateID > 0) {
- [params setObject:[NSString stringWithFormat:@"%d", updateID] forKey:@"since_id"];
+ [params setObject:[NSString stringWithFormat:@"%qu", updateID] forKey:@"since_id"];
}
if (pageNum > 0) {
[params setObject:[NSString stringWithFormat:@"%d", pageNum] forKey:@"page"];
More information about the commits
mailing list