def get(self, request): if request == "vaildation": access_token = self.get_argument('access_token') db = DB() if False == db.verify_access_token(access_token): raise tornado.web.HTTPError(403) elif request == "access_state": access_token = self.get_argument('access_token') db = DB() self.write(tornado.escape.json_encode(db.access_state(access_token)))
def _on_auth(self, user): user_access_token = self.get_cookie('access_token') access_token = {} access_token = user['access_token'] access_token['screen_name'] = user['name'] json_at = tornado.escape.json_encode(access_token) db = DB() db.update_api_access_token('sina', user_access_token, json_at) self.clear_cookie('at') self.redirect('/') pass
def post(self): username = self.get_argument('username') md5passwd = self.get_argument('md5passwd') db = DB() if db.verify_user(username, md5passwd) == True: self.set_cookie( 'access_token', db.create_access_token(username), expires_days = 30 ) self.redirect('/') else: self.redirect('/signin?status=failed')
def _on_access_token(self, response): ''' STEP5(最后一步): 得到access_token (终于完成了ww ''' if response.error: raise tornado.web.HTTPError(403, "Get Access Token Failed ~") return twitter_access_token = tornado.escape.json_encode(tornado.auth._oauth_parse_response(response.body)) db = DB() user_access_token = self.get_argument('access_token') # 如果更新access_token失败就返回422错误 if not db.update_api_access_token('twitter', user_access_token, twitter_access_token): raise tornado.web.HTTPError(422) return self.finish()
def post(self, request): db = DB() try: access_token = tornado.escape.json_decode( db.get_api_access_token('twitter', self.get_argument('access_token')) ) except: raise tornado.web.HTTPError(403) secret = access_token['secret'] key = access_token['key'] if request == 'update': # tweet status = tornado.escape.url_unescape(self.get_argument('status').encode('utf-8')) def on_fetch(tweets): if tweets == None: raise tornado.httpclient.HTTPError(403) self.write('Done ~') self.finish() # 将多于140个字符的部分截去 if len(status) > 140: text = status[:136] + '...' else: text = status # 如果有in_reply_to参数则带上这个参数ww in_reply_to_param = {} if self.get_argument('in_reply_to', None): in_reply_to_param['in_reply_to_status_id'] = self.get_argument('in_reply_to', None) self.twitter_request( path = "/statuses/update", post_args={"status": text}, access_token = {u'secret': secret, u'key': key}, callback = on_fetch, **in_reply_to_param )
def post(self, request): db = DB() try: access_token = tornado.escape.json_decode( db.get_api_access_token('qq', self.get_argument('access_token')) ) except: raise tornado.web.HTTPError(403) secret = access_token['secret'] key = access_token['key'] if request == 'update': # tweet status = tornado.escape.url_unescape(self.get_argument('status').encode('utf-8')) def on_fetch(tweets): self.write('Done ~') self.finish() # 将多于140个字符的部分截去 if len(status) > 140: text = status[:136] + '...' else: text = status # 如果有in_reply_to参数则带上这个参数ww in_reply_to_param = {} if self.get_argument('in_reply_to', None): in_reply_to_param['in_reply_to_status_id'] = self.get_argument('in_reply_to', None) self.qq_request( path = "/t/add", post_args={"content": text}, access_token = {u'secret': secret, u'key': key}, clientip = '202.120.161.232', # 这里需要伪造一个用户IP callback = on_fetch, format = 'json', )
def post(self): db = DB() if True == db.create_user(self.get_argument('username'), self.get_argument('md5passwd')): self.redirect('/signin') else: self.redirect('signup?status=failed')
def get(self, request): db = DB() try: access_token = tornado.escape.json_decode( db.get_api_access_token('twitter', self.get_argument('access_token')) ) except: raise tornado.web.HTTPError(403) secret = access_token['secret'] key = access_token['key'] if request == 'home_timeline': # get home timeline kwargs = {} if self.get_argument('since_id', None): kwargs['since_id'] = self.get_argument('since_id', None) if self.get_argument('page', None): kwargs['page'] = self.get_argument('page', None) self.twitter_request( path = "/statuses/home_timeline", access_token = {u'secret': secret, u'key': key}, callback = self._on_fetch, count = 50, **kwargs ) elif request == 'mentions': # 得到mention一个用户的Tweet self.twitter_request( path = "/statuses/mentions", page = self.get_argument('page', 1), access_token = {u'secret': secret, u'key': key}, callback = self._on_fetch, count = 50, ) elif request == 'show': #得到某个特定id的Tweet self.twitter_request( path = "/statuses/show/" + str(self.get_argument('id')), access_token = {u'secret': secret, u'key': key}, callback = self.async_callback(self._on_fetch, single_tweet = True), ) elif request == 'related_results': #得到某个特定id的Tweet相关的结果 self.twitter_request( path = "/related_results/show/" + str(self.get_argument('id')), access_token = {u'secret': secret, u'key': key}, callback = self._on_related_results, ) elif request == 'user_info': # 得到某个用户的信息 self.twitter_request( path = "/users/show", access_token = {u'secret': secret, u'key': key}, callback = self._on_user_info, screen_name = self.get_argument('screen_name') ) elif request == 'remove': # 删除某个Tweet def on_fetch(tweet): pass self.twitter_request( path = "/statuses/destroy/" + str(self.get_argument('id')), access_token = {u'secret': secret, u'key': key}, post_args = {}, callback = None, ) elif request == 'user_timeline': # 得到某用户的Timeline self.twitter_request( path = "/statuses/user_timeline", access_token = {u'secret': secret, u'key': key}, page = self.get_argument('page', 1), screen_name = self.get_argument('screen_name'), callback = self._on_fetch, ) elif request == 'test': self.write('喵~') self.finish() elif request == 'signout': db = DB() if False == db.remove_api_access_token('twitter', self.get_argument('access_token')): raise tornado.web.HTTPError(403) self.finish() else: raise tornado.httpclient.HTTPError(403, 'Invaild Request Path ~')