diff --git a/AccessToken.m b/AccessToken.m index 20c5e8c..178a2bf 100644 --- a/AccessToken.m +++ b/AccessToken.m @@ -65,5 +65,13 @@ return [d objectForKey:@"screenName"]; } ++ (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector { + return NO; +} + ++ (BOOL)isKeyExcludedFromWebScript:(const char *)name { + return NO; +} + @end diff --git a/Constants.js b/Constants.js index 946d2e3..d39a649 100644 --- a/Constants.js +++ b/Constants.js @@ -14,4 +14,8 @@ OAUTH_REQUEST_TOKEN_URL = "http://twitter.com/oauth/request_token" OAUTH_USER_AUTHORIZATION_URL = "http://twitter.com/oauth/authorize" OAUTH_ACCESS_TOKEN_URL = "http://twitter.com/oauth/access_token" OAUTH_SERVICE_NAME = "twitter.com" -APP_NAME = "Twittia"; \ No newline at end of file + +APP_NAME = "Twittia"; + +API_PATH = "http://api.twitter.com/1/"; +WEBSITE_PATH = "http://twitter.com/"; diff --git a/Controller.m b/Controller.m index 312d956..ed4319d 100644 --- a/Controller.m +++ b/Controller.m @@ -49,8 +49,8 @@ accessToken = [[AccessToken alloc] init]; - NSLog(@"%@", accessToken.accessToken); - accessToken.accessToken = nil; + + //accessToken.accessToken = nil; if (!accessToken.accessToken) { [self initOauth]; } else { diff --git a/OAToken+WebView.h b/OAToken+WebView.h deleted file mode 100644 index 317ea8b..0000000 --- a/OAToken+WebView.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// OAToken+WebView.h -// Twittia 2 -// -// Created by Jeena on 02.05.10. -// Licence: BSD (see attached LICENCE.txt file). -// - -#import -#import - - -@interface OAToken(WebView) - -@end diff --git a/OAToken+WebView.m b/OAToken+WebView.m deleted file mode 100644 index 3fa9d81..0000000 --- a/OAToken+WebView.m +++ /dev/null @@ -1,23 +0,0 @@ -// -// OAToken+WebView.m -// Twittia 2 -// -// Created by Jeena on 02.05.10. -// Licence: BSD (see attached LICENCE.txt file). -// - -#import "OAToken+WebView.h" - - -// this is just so the JavaScript can get the tokens. -@implementation OAToken(WebView) - -+ (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector { - return NO; -} - -+ (BOOL)isKeyExcludedFromWebScript:(const char *)name { - return NO; -} - -@end diff --git a/OAuth.h b/OAuth.h deleted file mode 100644 index 44c4548..0000000 --- a/OAuth.h +++ /dev/null @@ -1,31 +0,0 @@ -// -// OAuth.h -// Twittia 2 -// -// Created by Jeena on 01.05.10. -// Licence: BSD (see attached LICENCE.txt file). -// - -#import -#import -#import -#import "OAToken+WebView.h" - - -@interface OAuth : NSObject { - OAToken *requestToken; - OAToken *accessToken; - OAToken *consumerToken; - OAConsumer *consumer; -} - -@property (nonatomic, retain) OAToken *accessToken; -@property (nonatomic, retain) OAToken *consumerToken; - -- (id)init; -- (void)requestAToken; -- (void)requestAccessToken; -- (void)updateTweet:(NSString *)tweet inReplaToStatus:(NSString *)statusId; - - -@end diff --git a/OAuth.m b/OAuth.m deleted file mode 100644 index 6960b27..0000000 --- a/OAuth.m +++ /dev/null @@ -1,176 +0,0 @@ -// -// OAuth.m -// Twittia 2 -// -// Created by Jeena on 01.05.10. -// Licence: BSD (see attached LICENCE.txt file). -// - -#import "OAuth.h" -#import "Constants.h" -#import -#import -#import -#import - - -@implementation OAuth - -@synthesize accessToken, consumerToken; - -+ (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector { - return NO; -} - -+ (BOOL)isKeyExcludedFromWebScript:(const char *)name { - return NO; -} - --(id)init { - if (self = [super init]) { - self.consumerToken = [[OAToken alloc] initWithKey:OAUTH_CONSUMER_KEY secret:OAUTH_CONSUMER_SECRET]; - self.accessToken = [[OAToken alloc] initWithUserDefaultsUsingServiceProviderName:OAUTH_SERVICE_NAME prefix:APP_NAME]; - consumer = [[OAConsumer alloc] initWithKey:OAUTH_CONSUMER_KEY secret:OAUTH_CONSUMER_SECRET]; - } - return self; -} - -- (void)dealloc { - [consumerToken release]; - [accessToken release]; - [consumer release]; - [super dealloc]; -} - -- (void)awakeFromNib { - if (!self.accessToken) { - [self requestAToken]; - } -} - --(void)requestAToken { - - NSURL *url = [NSURL URLWithString:OAUTH_REQUEST_TOKEN_URL]; - - OAMutableURLRequest *request = [[OAMutableURLRequest alloc] initWithURL:url - consumer:consumer - token:nil // we don't have a Token yet - realm:nil // our service provider doesn't specify a realm - signatureProvider:nil]; // use the default method, HMAC-SHA1 - - [request setHTTPMethod:@"POST"]; - - OADataFetcher *fetcher = [[OADataFetcher alloc] init]; - - [fetcher fetchDataWithRequest:request - delegate:self - didFinishSelector:@selector(requestTokenTicket:didFinishWithData:) - didFailSelector:@selector(requestTokenTicket:didFailWithError:)]; -} - -- (void)requestTokenTicket:(OAServiceTicket *)ticket didFinishWithData:(NSData *)data { - if (ticket.didSucceed) { - NSString *responseBody = [[NSString alloc] initWithData:data - encoding:NSUTF8StringEncoding]; - requestToken = [[OAToken alloc] initWithHTTPResponseBody:responseBody]; - - NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@?oauth_token=%@", OAUTH_USER_AUTHORIZATION_URL, requestToken.key]]; - [[NSWorkspace sharedWorkspace] openURL:url]; - } -} - -- (void)requestTokenTicket:(OAServiceTicket *)ticket didFailWithError:(NSError *)error { - NSLog(@"ERROR: %@", error); -} - -- (void)requestAccessToken { - - NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@", OAUTH_ACCESS_TOKEN_URL]]; - - OAMutableURLRequest *request = [[OAMutableURLRequest alloc] initWithURL:url - consumer:consumer - token:requestToken // we don't have a Token yet - realm:nil // our service provider doesn't specify a realm - signatureProvider:nil]; // use the default method, HMAC-SHA1 - - [request setHTTPMethod:@"POST"]; - - - - OADataFetcher *fetcher = [[OADataFetcher alloc] init]; - [fetcher fetchDataWithRequest:request - delegate:self - didFinishSelector:@selector(accessTokenTicket:didFinishWithData:) - didFailSelector:@selector(accessTokenTicket:didFailWithError:)]; - - -} - -- (void)accessTokenTicket:(OAServiceTicket *)ticket didFinishWithData:(NSData *)data { - NSLog(@"%@", ticket); - if (ticket.didSucceed) { - NSString *responseBody = [[NSString alloc] initWithData:data - encoding:NSUTF8StringEncoding]; - - self.accessToken = [[OAToken alloc] initWithHTTPResponseBody:responseBody]; - [accessToken storeInUserDefaultsWithServiceProviderName:OAUTH_SERVICE_NAME prefix:APP_NAME]; - - NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; - [nc postNotificationName:@"authentificationSucceded" object:self]; - } -} - - - -- (void)accessTokenTicket:(OAServiceTicket *)ticket didFailWithError:(NSError *)error { - NSLog(@"ERROR a: %@", error); - // [self requestAccessToken]; - - NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@?oauth_token=%@", OAUTH_USER_AUTHORIZATION_URL, requestToken.key]]; - [[NSWorkspace sharedWorkspace] openURL:url]; -} - -- (void)updateTweet:(NSString *)tweet inReplaToStatus:(NSString *)statusId { - - NSLog(@"%@ %@", tweet, statusId); - - NSURL *url = [NSURL URLWithString:@"http://api.twitter.com/1/statuses/update.json"]; - OAMutableURLRequest *request = [[OAMutableURLRequest alloc] initWithURL:url - consumer:consumer - token:accessToken - realm:nil - signatureProvider:nil]; - - OARequestParameter *source = [[OARequestParameter alloc] initWithName:@"source" value:@"twittia"]; - OARequestParameter *status = [[OARequestParameter alloc] initWithName:@"status" value:tweet]; - - NSMutableArray *params = [NSMutableArray arrayWithObjects:source, status, nil]; - - if (statusId) { - OARequestParameter *reply = [[OARequestParameter alloc] initWithName:@"in_reply_to_status_id" value:[NSString stringWithString:statusId]]; - [params addObject:reply]; - } - - [request setHTTPMethod:@"POST"]; - [request setParameters:params]; - - OADataFetcher *fetcher = [[OADataFetcher alloc] init]; - [fetcher fetchDataWithRequest:request - delegate:self - didFinishSelector:@selector(updateTweetTicket:didFinishWithData:) - didFailSelector:@selector(updateTweetTokenTicket:didFailWithError:)]; -} - -- (void)updateTweetTicket:(OAServiceTicket *)ticket didFinishWithData:(NSData *)data { - if (ticket.didSucceed) { - NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; - [nc postNotificationName:@"getTweetUpdates" object:self]; - - } -} - -- (void)updateTweetTokenTicket:(OAServiceTicket *)ticket didFailWithError:(NSError *)error { - NSLog(@"ERROR update tweet: %@", error); -} - -@end diff --git a/Twittia 2.xcodeproj/project.pbxproj b/Twittia 2.xcodeproj/project.pbxproj index cc65a92..35222b5 100644 --- a/Twittia 2.xcodeproj/project.pbxproj +++ b/Twittia 2.xcodeproj/project.pbxproj @@ -68,11 +68,7 @@ 1F1990E1117BD2650049BEA7 /* ReleaseNotes.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = ReleaseNotes.html; sourceTree = ""; }; 1F3642ED118C8C35008198EF /* oauth.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = oauth.js; sourceTree = ""; }; 1F3642EE118C8C35008198EF /* sha1.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = sha1.js; sourceTree = ""; }; - 1F364396118CBC77008198EF /* OAuth.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OAuth.h; sourceTree = ""; }; - 1F364397118CBC77008198EF /* OAuth.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OAuth.m; sourceTree = ""; }; 1F36440E118CC173008198EF /* OAuthConsumer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = OAuthConsumer.framework; sourceTree = ""; }; - 1F36465C118DA5A7008198EF /* OAToken+WebView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OAToken+WebView.h"; sourceTree = ""; }; - 1F36465D118DA5A7008198EF /* OAToken+WebView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "OAToken+WebView.m"; sourceTree = ""; }; 1F4673E21180F519006CC37C /* jQuery.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = jQuery.js; sourceTree = ""; }; 1F4673E41180F590006CC37C /* jQuery-Plugins.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "jQuery-Plugins.js"; sourceTree = ""; }; 1F4673E61180F654006CC37C /* TwittiaCore.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = TwittiaCore.js; sourceTree = ""; }; @@ -199,12 +195,8 @@ 1FFA36D51177D879006C8562 /* ViewDelegate.m */, 2A37F4AEFDCFA73011CA2CEA /* MyDocument.h */, 2A37F4ACFDCFA73011CA2CEA /* MyDocument.m */, - 1F364396118CBC77008198EF /* OAuth.h */, - 1F364397118CBC77008198EF /* OAuth.m */, 1F77DB45118C5F1C007C7F1E /* Constants.h */, 1F77DB46118C5F1C007C7F1E /* Constants.m */, - 1F36465C118DA5A7008198EF /* OAToken+WebView.h */, - 1F36465D118DA5A7008198EF /* OAToken+WebView.m */, 1F618EC812DB5E6100E500D9 /* TweetModel.h */, 1F618EC912DB5E6100E500D9 /* TweetModel.m */, 1FC2549A1427D9930035D84B /* AccessToken.h */, diff --git a/TwittiaCore.js b/TwittiaCore.js index 1fe060a..8beb990 100644 --- a/TwittiaCore.js +++ b/TwittiaCore.js @@ -6,10 +6,6 @@ // Licence: BSD (see attached LICENCE.txt file). // -API_PATH = "http://api.twitter.com/1/"; -WEBSITE_PATH = "http://twitter.com/"; -//API_PATH = "http://identi.ca/api/"; - function Twittia(action) { this.max_length = 100; this.since_id; @@ -20,8 +16,6 @@ function Twittia(action) { this.body = document.createElement("ol"); this.body.className = this.action; - - this.requestAToken(); } Twittia.prototype.newStatus = function(status, supress_new_with_timeout) { @@ -262,14 +256,14 @@ Twittia.prototype.getNewData = function(supress_new_with_timeout) { var _this = this; var message = { method:"GET" , action:url, parameters: parameters }; - + OAuth.completeRequest(message, { consumerKey : OAUTH_CONSUMER_KEY , consumerSecret: OAUTH_CONSUMER_SECRET - , token : controller.accessToken.accessToken - , tokenSecret : controller.accessToken.secret + , token : controller.accessToken.accessToken() + , tokenSecret : controller.accessToken.secret() }); - + $.ajax( { beforeSend: function(xhr) { xhr.setRequestHeader("Authorization", OAuth.getAuthorizationHeader("", message.parameters)); @@ -305,8 +299,8 @@ Twittia.prototype.sendNewTweet = function(tweet, in_reply_to_status_id) { OAuth.completeRequest(message, { consumerKey : OAUTH_CONSUMER_KEY , consumerSecret: OAUTH_CONSUMER_SECRET - , token : controller.accessToken.accessToken - , tokenSecret : controller.accessToken.secret + , token : controller.accessToken.accessToken() + , tokenSecret : controller.accessToken.secret() }); $.ajax({ @@ -337,8 +331,8 @@ Twittia.prototype.retweet = function(status_id, item) { OAuth.completeRequest(message, { consumerKey : OAUTH_CONSUMER_KEY , consumerSecret: OAUTH_CONSUMER_SECRET - , token : controller.accessToken.accessToken - , tokenSecret : controller.accessToken.secret + , token : controller.accessToken.accessToken() + , tokenSecret : controller.accessToken.secret() }); $.ajax({ diff --git a/TwittiaOauth.js b/TwittiaOauth.js index e66122c..b1400b9 100644 --- a/TwittiaOauth.js +++ b/TwittiaOauth.js @@ -8,7 +8,6 @@ function TwittiaOauth() { this.requestAToken(); - alert(APP_NAME); } TwittiaOauth.prototype.requestAToken = function() { @@ -49,7 +48,6 @@ TwittiaOauth.prototype.requestTokenTicketFinished = function(data) { TwittiaOauth.prototype.requestAccessToken = function(responseBody) { // "twittia://oauth_token?oauth_token=jCcf7ClzJMbE4coZdONi467OAQxRGOBZJsuopG8C8&oauth_verifier=BK2ZkAIz51lqI4qta8MnKc280GyDLy0OQBpdsEmjT40" - alert(responseBody); var urlVars = getUrlVars(responseBody);