-def parse_oauth_tokens(result):
- for r in result.split('&'):
- k, v = r.split('=')
- if k == 'oauth_token':
- oauth_token = v
- elif k == 'oauth_token_secret':
- oauth_token_secret = v
- return oauth_token, oauth_token_secret
-
-def oauth_dance(options):
- print ("Hi there! We're gonna get you all set up to use Twitter"
- " on the command-line.")
- twitter = Twitter(
- auth=OAuth('', '', CONSUMER_KEY, CONSUMER_SECRET),
- format='')
- oauth_token, oauth_token_secret = parse_oauth_tokens(
- twitter.oauth.request_token())
- print """
-In the web browser window that opens please choose to Allow access to the
-command-line tool. Copy the PIN number that appears on the next page and
-paste or type it here:
-"""
- webbrowser.open(
- 'http://api.twitter.com/oauth/authorize?oauth_token=' +
- oauth_token)
- time.sleep(2) # Sometimes the last command can print some
- # crap. Wait a bit so it doesn't mess up the next
- # prompt.
- oauth_verifier = raw_input("Please type the PIN: ").strip()
- twitter = Twitter(
- auth=OAuth(
- oauth_token, oauth_token_secret, CONSUMER_KEY, CONSUMER_SECRET),
- format='')
- oauth_token, oauth_token_secret = parse_oauth_tokens(
- twitter.oauth.access_token(oauth_verifier=oauth_verifier))
- oauth_file = open(options['oauth_filename'], 'w')
- print >> oauth_file, oauth_token
- print >> oauth_file, oauth_token_secret
- oauth_file.close()
- print
- print "That's it! Your authorization keys have been written to %s." % (
- options['oauth_filename'])
+
+class RateLimitStatus(Action):
+ def __call__(self, twitter, options):
+ rate = twitter.application.rate_limit_status()
+ resources = rate['resources']
+ for resource in resources:
+ for method in resources[resource]:
+ limit = resources[resource][method]['limit']
+ remaining = resources[resource][method]['remaining']
+ reset = resources[resource][method]['reset']
+
+ print("Remaining API requests for %s: %s / %s" %
+ (method, remaining, limit))
+ print("Next reset in %ss (%s)\n" % (int(reset - time.time()),
+ time.asctime(time.localtime(reset))))
+
+
+class ReplAction(Action):
+ def __call__(self, twitter, options):
+ upload = Twitter(
+ auth=twitter.auth,
+ domain="upload.twitter.com")
+ printNicely(
+ "\nUse the 'twitter' object to interact with"
+ " the Twitter REST API.\n"
+ "Use twitter_upload to interact with "
+ "upload.twitter.com\n\n")
+ code.interact(local={
+ "twitter": twitter,
+ "t": twitter,
+ "twitter_upload": upload,
+ "u": upload
+ })