Beispiel #1
0
 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)))
Beispiel #2
0
 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
Beispiel #3
0
 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')
Beispiel #4
0
    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()
Beispiel #5
0
    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
                )       
Beispiel #6
0
    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',
                )       
Beispiel #7
0
 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')
Beispiel #8
0
    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 ~')