import urllib
import simplejson as json
import ConfigParser
-import time
-import oauth2 as oauth
+from twitterclient import TwitterClient
-class PostToTwitter:
+class PostToTwitter(TwitterClient):
def __init__(self, cfg):
- self.oauth_token = oauth.Token(cfg.get('twitter', 'token'), cfg.get('twitter', 'secret'))
- self.oauth_consumer = oauth.Consumer(cfg.get('twitter', 'consumer'), cfg.get('twitter', 'consumersecret'))
+ TwitterClient.__init__(self, cfg)
if cfg.has_option('bit.ly','account'):
self.bitlyuser = cfg.get('bit.ly','account')
def do_post(self, msg):
"""
Actually make a post to twitter!
-
- Authentication is done through OAuth, which controls the user to whom this is posted.
"""
- params = {
- 'oauth_version': "1.0",
- 'oauth_nonce': oauth.generate_nonce(),
- 'oauth_timestamp': int(time.time()),
- 'oauth_token': self.oauth_token.key,
- 'oauth_consumer_key': self.oauth_consumer.key,
- 'status': msg,
- }
-
- req = oauth.Request(method="POST",
- url="https://api.twitter.com/1/statuses/update.json",
- parameters=params)
- req.sign_request(oauth.SignatureMethod_HMAC_SHA1(), self.oauth_consumer, self.oauth_token)
-
- # Make the actual call to twitter
- instream=urllib.urlopen("https://api.twitter.com/1/statuses/update.json", req.to_postdata())
- ret=instream.read()
- instream.close()
- ret_dict = json.loads(ret)
+ ret_dict =self.twitter_request('statuses/update.json', 'POST', {
+ 'status': msg,
+ })
+
if ret_dict.has_key('created_at'):
return
if ret_dict.has_key('error'):
expected = set([r[0] for r in curs.fetchall()])
# Get list of current screen names the list is following
- response = self.twitter_request('subscribers/members.json')
+ response = self.twitter_request('%s/subscribers/members.json' % self.twittername)
current = set([x['screen_name'] for x in response['users']])
# Start by deleting, then adding the new ones
if ext_params:
params.update(ext_params)
- url = "https://api.twitter.com/1/%s/%s" % (self.twittername, apicall)
+ url = "https://api.twitter.com/1/%s" % apicall
req = oauth.Request(method=method,
url=url,
def remove_subscriber(self, name):
print "Removing twitter user %s from list." % name
- self.twitter_request('subscribers/members.json', 'POST', {
+ self.twitter_request('%s/subscribers/members.json' % self.twittername,'POST', {
'id': name,
'_method': 'DELETE',
})
def add_subscriber(self, name):
print "Adding twitter user %s to list." % name
- self.twitter_request('subscribers/members.json', 'POST', {
+ self.twitter_request('%s/subscribers/members.json' % self.twittername, 'POST', {
'id': name,
})