def get(self): from csrffilter import CSRFFilter from pubsubhubbub import pubSubHubbub user = users.get_current_user() user_prefs_query = UserPrefs.all() user_prefs_query.filter("google_id =", user) user_prefs = user_prefs_query.get() mode = self.request.get('mode') if mode == 'add_twitter_account': self.redirect('/oauth/twitter/login') elif mode == 'delete_twitter_account': if user_prefs.oauth_access_token_key: oauth_access_token_query = OAuthAccessToken.get_by_key_name(user_prefs.oauth_access_token_key.key().name()) oauth_access_token_query.delete() user_prefs.oauth_access_token_key = None user_prefs.put() elif mode == 'enable_sync': hub = pubSubHubbub(self, user) subscribe_feed = 'http://buzz.googleapis.com/feeds/%s/public/posted' % user.nickname() hub.add_feed(subscribe_feed) user_prefs.callback_key = hub.callback_key user_prefs.put() elif mode == 'disable_sync': hub = pubSubHubbub(self, user) subscribe_feed = 'http://buzz.googleapis.com/feeds/%s/public/posted' % user.nickname() hub.remove_feed(subscribe_feed) template_values = { 'nickname' : user.nickname(), 'user_prefs': user_prefs, } path = os.path.join(os.path.dirname(__file__), 'templates/config.html') html = template.render(path, template_values) self.response.out.write(CSRFFilter(self, user).insertCSRFToken(html))
def post(self): from csrffilter import CSRFFilter user = users.get_current_user() #CSRF Protection filter = CSRFFilter(self, user) if not filter.checkCSRFToken(): return filter.redirectCSRFWarning() user_prefs_query = UserPrefs.all() user_prefs_query.filter("google_id =", user) user_prefs = user_prefs_query.get() template_values = { 'nickname': user.nickname(), 'user_prefs': user_prefs, } path = os.path.join(os.path.dirname(__file__), 'templates/config.html') self.response.out.write(template.render(path, template_values))
def get(self): #from google.appengine.api import memcache import feedparser import google_url_shortner_api logging.debug('Starting feed taskqueue.') session_id = self.request.get('session_id') data = memcache.get('feed_%s' % session_id) if data is not None: logging.debug('Memcache receive success.') logging.debug(data) user_prefs_query = UserPrefs.all() user_prefs_query.filter('callback_key =', data['callback_key']) user_prefs = user_prefs_query.get() if user_prefs is not None: logging.info('Google Account: %s' % user_prefs.google_id.nickname()) feed = feedparser.parse(data['feed']) logging.debug(feed) entry_count = 0 for entry in feed['entries']: if entry_count > 3: logging.info('Entry count over capacity. count: %s' % len(feed['entries'])) break; tweet = entry['summary'] logging.info('Raw Tweet: %s' % tweet) bitly_link = '' logging.debug(entry) logging.debug(entry['link']) checked_link = [] for link in entry['links']: if link['type'] == 'image/jpeg': if not link['href'] in checked_link: bitly_link = bitly_link + ' ' + google_url_shortner_api.short(link['href']) checked_link.append(link['href']) if entry.get('media_player'): if not entry['media_player']['url'] in checked_link: bitly_link = bitly_link + ' ' + google_url_shortner_api.short(entry['media_player']['url']) checked_link.append(entry['media_player']['url']) #tweet = tweet.encode('utf-8') tweet = tweet.replace('\r\n', '\n') tweet = tweet.replace('\r', '\n') tweet = tweet.replace('\n', '') #tweet = unicode(tweet, 'utf-8') short_link_length = 21 twitter_max_length = 140 link_length = short_link_length * len(checked_link) tweet_length = len(tweet) logging.debug('Link length: %s' % link_length) logging.debug('Tweet length: %s' % tweet_length) if (tweet_length + link_length) > twitter_max_length: limit_tweet_length = (tweet_length - twitter_max_length) + link_length limit_tweet_length = tweet_length - limit_tweet_length - 3 tweet = tweet[0:limit_tweet_length] tweet = tweet + '...' + bitly_link logging.info('Limited Tweet: %s' % tweet) logging.info('Limited Tweet Length: %s' % len(tweet)) else: tweet = tweet + bitly_link tweet = tweet.encode('utf-8') logging.info('Tweet: %s' % tweet) if user_prefs.oauth_access_token_key is not None: oauth_access_token = OAuthAccessToken.get_by_key_name(user_prefs.oauth_access_token_key.key().name()) if oauth_access_token is not None: logging.info('Twitter Account: %s' % user_prefs.oauth_access_token_key.specifier) try: client = OAuthClient('twitter', self) client.token = oauth_access_token client.post('/statuses/update', status=tweet) except Exception, error: logging.error('Tweet Failed: %s' % error) entry_count = entry_count + 1 else: logging.error('Callback_key not found.')
def callback(self, return_to="/config"): oauth_token = self.handler.request.get("oauth_token") if not oauth_token: return self.get_request_token() oauth_token = ( OAuthRequestToken.all().filter("oauth_token =", oauth_token).filter("service =", self.service).fetch(1)[0] ) token_info = self.get_data_from_signed_url(self.service_info["access_token_url"], oauth_token) """ key_name = create_uuid() self.token = OAuthAccessToken( key_name=key_name, service=self.service, **dict(token.split('=') for token in token_info.split('&')) ) if 'specifier_handler' in self.service_info: specifier = self.token.specifier = self.service_info['specifier_handler'](self) old = OAuthAccessToken.all().filter( 'specifier =', specifier).filter( 'service =', self.service) db.delete(old) self.token.put() """ # logging.error("token_info="+token_info) token_info_list = dict(token.split("=") for token in token_info.split("&")) token_query = OAuthAccessToken.all() token_query.filter("oauth_token =", token_info_list["oauth_token"]) token_query.filter("oauth_token_secret =", token_info_list["oauth_token_secret"]) token_query.filter("service =", self.service) # logging.error("oauth_token="+token_info_list["oauth_token"]) # logging.error("service="+self.service) # remember_key = create_key(token_info_list["screen_name"]) if not token_query.count(): key_name = create_uuid() self.token = OAuthAccessToken(key_name=key_name) # self.token.key_name = create_uuid() self.token.oauth_token = token_info_list["oauth_token"] self.token.oauth_token_secret = token_info_list["oauth_token_secret"] self.token.service = self.service self.token.specifier = token_info_list["screen_name"] # self.token.remember_key = remember_key self.token.put() else: self.token = token_query.get() if self.token.specifier != token_info_list["screen_name"]: self.token.specifier = token_info_list["screen_name"] self.token.updated_at = datetime.now() self.token.put() user = users.get_current_user() user_prefs_query = UserPrefs.all() user_prefs_query.filter("google_id =", user) # user_prefs_query.filter("oauth_access_token_key =", self.token.key()) user_prefs = user_prefs_query.get() if user_prefs is None: user_prefs = UserPrefs() user_prefs.google_id = user user_prefs.oauth_access_token_key = self.token.key() user_prefs.put() else: # user_prefs.google_id = user user_prefs.oauth_access_token_key = self.token.key() user_prefs.put() # cookie_value = {} # cookie_value['key'] = remember_key # cookie_value['specifier'] = self.token.specifier # memcache.add("twitter_token_" + remember_key, self.token, 3600) # self.set_cookie(cookie_value) self.handler.redirect(return_to)