Пример #1
0
    def get(self):
        #get basic user information
        params = {'user_id': self.user.twitter_id}
        userInfo = call_api.twitter_api('GET', '/1.1/users/show.json', params,
                                        self.user.tw_access_token,
                                        self.user.tw_token_secret)
        #get friends
        params = {'user_id': self.user.twitter_id, 'cursor': '-1'}
        response = call_api.twitter_api('GET', '/1.1/friends/ids.json', params,
                                        self.user.tw_access_token,
                                        self.user.tw_token_secret)
        friends = [str(id) for id in response['ids']]

        m_userInfo = {
            'twitter_id': self.user.twitter_id,
            'realname': userInfo.get('name') or '',
            'username': userInfo.get('screen_name') or '',
            'picture': userInfo['profile_image_url'],
            'location': userInfo.get('location') or '',
            'website': userInfo.get('url') or '',
            'friends': friends
        }
        data_models.update_twitter_info(self.user, m_userInfo)
        data_models.update_twitter_friends(self.user, m_userInfo)
        self.redirect('/profile')
Пример #2
0
    def getTWFriend(self, reload):
        client = memcache.Client()
        #        friend_ids = client.get(self.user.user_id+'tw_fids')
        m_friends = TWFriends.gql('WHERE twitter_id = :1',
                                  self.user.twitter_id).get()
        friend_ids = m_friends.friends
        cursor = client.get(self.user.user_id + 'tw_cursor')
        #        if not friend_ids or reload:
        if reload:
            #            params = {'user_id':self.user.twitter_id,
            #                      'cursor':'-1'}
            #            response = call_api.twitter_api('GET', '/1.1/friends/ids.json', params,
            #                                 self.user.tw_access_token,
            #                                 self.user.tw_token_secret)
            #            friend_ids = response['ids']
            cursor = 0


#            client.add(self.user.user_id+'tw_fids', friend_ids)
#            client.add(self.user.user_id+'tw_cursor', cursor)

        if cursor >= len(friend_ids):
            return ({}, 0, m_friends.num_on_cw)
        if cursor + FRIENDS_EACH_BULK > len(friend_ids):
            next_part = friend_ids[cursor:]
        else:
            next_part = friend_ids[cursor:(cursor + FRIENDS_EACH_BULK)]
        cursor += FRIENDS_EACH_BULK

        params = {'user_id': ','.join([str(id) for id in next_part])}
        response = call_api.twitter_api('GET', '/1.1/users/lookup.json',
                                        params, self.user.tw_access_token,
                                        self.user.tw_token_secret)
        TW_friends = []
        current_cws = 0
        for friend in response:
            tw_friend = {
                'id': friend['id_str'],
                'name': friend['name'],
                'picture': friend['profile_image_url']
            }
            if friend['id_str'] in friend_ids[:m_friends.num_on_cw]:
                tmpuser = User.gql('WHERE twitter_id = :1',
                                   friend['id_str']).get()
                tw_friend['uid'] = tmpuser.user_id
                TW_friends.insert(0, tw_friend)
                current_cws += 1
            else:
                TW_friends.append(tw_friend)
        client.set(self.user.user_id + 'tw_cursor', cursor)
        return (TW_friends, current_cws, m_friends.num_on_cw)
Пример #3
0
 def get(self):
     #get basic user information
     params = {'user_id':self.user.twitter_id}
     userInfo = call_api.twitter_api('GET', '/1.1/users/show.json', 
                                     params, self.user.tw_access_token, 
                                     self.user.tw_token_secret)
     #get friends
     params = {'user_id':self.user.twitter_id,
               'cursor':'-1'}
     response = call_api.twitter_api('GET', '/1.1/friends/ids.json', params, 
                                     self.user.tw_access_token, 
                                     self.user.tw_token_secret)
     friends = [str(id) for id in response['ids']]
     
     m_userInfo = {'twitter_id':self.user.twitter_id,
                   'realname':userInfo.get('name') or '',
                   'username':userInfo.get('screen_name') or '',
                   'picture':userInfo['profile_image_url'],
                   'location':userInfo.get('location') or '',
                   'website':userInfo.get('url') or '',
                   'friends':friends}
     data_models.update_twitter_info(self.user, m_userInfo)
     data_models.update_twitter_friends(self.user, m_userInfo)
     self.redirect('/profile')
Пример #4
0
    def getTWFriend(self, reload):
        client = memcache.Client()
#        friend_ids = client.get(self.user.user_id+'tw_fids')
        m_friends = TWFriends.gql('WHERE twitter_id = :1', self.user.twitter_id).get()
        friend_ids = m_friends.friends
        cursor = client.get(self.user.user_id+'tw_cursor')
#        if not friend_ids or reload:
        if reload:
#            params = {'user_id':self.user.twitter_id,
#                      'cursor':'-1'}
#            response = call_api.twitter_api('GET', '/1.1/friends/ids.json', params, 
#                                 self.user.tw_access_token, 
#                                 self.user.tw_token_secret)
#            friend_ids = response['ids']
            cursor = 0
#            client.add(self.user.user_id+'tw_fids', friend_ids)
#            client.add(self.user.user_id+'tw_cursor', cursor)
        
        if cursor >= len(friend_ids):
            return ({}, 0, m_friends.num_on_cw)
        if cursor + FRIENDS_EACH_BULK > len(friend_ids):
            next_part = friend_ids[cursor:]
        else:
            next_part = friend_ids[cursor:(cursor + FRIENDS_EACH_BULK)]
        cursor += FRIENDS_EACH_BULK
        
        params = {'user_id':','.join([str(id) for id in next_part])}
        response = call_api.twitter_api('GET', '/1.1/users/lookup.json', params, 
                                        self.user.tw_access_token, 
                                        self.user.tw_token_secret)
        TW_friends = []
        current_cws = 0
        for friend in response:
            tw_friend = {'id':friend['id_str'],
                         'name':friend['name'],
                         'picture':friend['profile_image_url']}
            if friend['id_str'] in friend_ids[:m_friends.num_on_cw]:
                tmpuser = User.gql('WHERE twitter_id = :1', friend['id_str']).get()
                tw_friend['uid'] = tmpuser.user_id
                TW_friends.insert(0, tw_friend)
                current_cws += 1
            else:
                TW_friends.append(tw_friend)
        client.set(self.user.user_id+'tw_cursor', cursor)
        return (TW_friends, current_cws,  m_friends.num_on_cw)
Пример #5
0
    def twitter_auth(self, callback):
        oauth_token = self.request.get('oauth_token')
        oauth_verifier = self.request.get('oauth_verifier')

        # check if the users has already granted access
        if not oauth_token:
            # step 1 - obtaining a request token

            # generate the oauth header
            oauth_header = twitter_oauth.get_oauth_header(
                'POST', conf.TWITTER_API + '/oauth/request_token', None,
                conf.WEB_SERVER + callback, conf.TWITTER_CONSUMER_KEY,
                conf.TWITTER_CONSUMER_SECRET)

            #sending a signed message to POST oauth/request_token
            step1 = urlfetch.fetch(conf.TWITTER_API + '/oauth/request_token',
                                   method=urlfetch.POST,
                                   headers={
                                       u'Authorization': oauth_header
                                   }).content

            step1_response = self.get_key_value_from_string(step1)

            #step 2 - redirecting the user
            self.redirect(conf.TWITTER_API +
                          '/oauth/authenticate?oauth_token=' +
                          step1_response['oauth_token'])

        else:  # if access has been granted
            params = {'oauth_verifier': oauth_verifier}

            # generate the oauth header
            oauth_header = twitter_oauth.get_oauth_header(
                'POST', conf.TWITTER_API + '/oauth/access_token', params, None,
                conf.TWITTER_CONSUMER_KEY, conf.TWITTER_CONSUMER_SECRET,
                oauth_token, None)
            payload = 'oauth_verifier=' + oauth_verifier

            # step 3 - converting the request token to an access token
            # make a request to the POST oauth/access_token endpoint, containing the oauth_verifier value obtained in step 2
            step3 = urlfetch.fetch(conf.TWITTER_API + '/oauth/access_token',
                                   payload=payload,
                                   method=urlfetch.POST,
                                   headers={
                                       u'Authorization':
                                       oauth_header,
                                       u'Content-Type':
                                       'application/x-www-form-urlencoded'
                                   }).content

            step3_response = self.get_key_value_from_string(step3)
            twitter_id = step3_response['user_id']
            oauth_token = step3_response['oauth_token']
            oauth_token_secret = step3_response['oauth_token_secret']

            #get basic user information
            params = {'user_id': twitter_id}
            userInfo = call_api.twitter_api('GET', '/1.1/users/show.json',
                                            params, oauth_token,
                                            oauth_token_secret)
            #get friends
            params = {'user_id': twitter_id, 'cursor': '-1'}
            response = call_api.twitter_api('GET', '/1.1/friends/ids.json',
                                            params, oauth_token,
                                            oauth_token_secret)
            friends = [str(id) for id in response['ids']]

            m_userInfo = {
                'twitter_id': twitter_id,
                'firstname': (userInfo.get('name') or '').capitalize(),
                'lastname': '',
                'realname': userInfo.get('name') or '',
                'username': userInfo.get('screen_name') or '',
                'picture': userInfo['profile_image_url'],
                'tw_access_token': oauth_token,
                'tw_token_secret': oauth_token_secret,
                'location': userInfo.get('location') or '',
                'website': userInfo.get('url') or '',
                'friends': friends
            }
            return m_userInfo
        return None
Пример #6
0
    def twitter_auth(self, callback):
        oauth_token = self.request.get("oauth_token")
        oauth_verifier = self.request.get("oauth_verifier")

        # check if the users has already granted access
        if not oauth_token:
            # step 1 - obtaining a request token

            # generate the oauth header
            oauth_header = twitter_oauth.get_oauth_header(
                "POST",
                conf.TWITTER_API + "/oauth/request_token",
                None,
                conf.WEB_SERVER + callback,
                conf.TWITTER_CONSUMER_KEY,
                conf.TWITTER_CONSUMER_SECRET,
            )

            # sending a signed message to POST oauth/request_token
            step1 = urlfetch.fetch(
                conf.TWITTER_API + "/oauth/request_token",
                method=urlfetch.POST,
                headers={u"Authorization": oauth_header},
            ).content

            step1_response = self.get_key_value_from_string(step1)

            # step 2 - redirecting the user
            self.redirect(conf.TWITTER_API + "/oauth/authenticate?oauth_token=" + step1_response["oauth_token"])

        else:  # if access has been granted
            params = {"oauth_verifier": oauth_verifier}

            # generate the oauth header
            oauth_header = twitter_oauth.get_oauth_header(
                "POST",
                conf.TWITTER_API + "/oauth/access_token",
                params,
                None,
                conf.TWITTER_CONSUMER_KEY,
                conf.TWITTER_CONSUMER_SECRET,
                oauth_token,
                None,
            )
            payload = "oauth_verifier=" + oauth_verifier

            # step 3 - converting the request token to an access token
            # make a request to the POST oauth/access_token endpoint, containing the oauth_verifier value obtained in step 2
            step3 = urlfetch.fetch(
                conf.TWITTER_API + "/oauth/access_token",
                payload=payload,
                method=urlfetch.POST,
                headers={u"Authorization": oauth_header, u"Content-Type": "application/x-www-form-urlencoded"},
            ).content

            step3_response = self.get_key_value_from_string(step3)
            twitter_id = step3_response["user_id"]
            oauth_token = step3_response["oauth_token"]
            oauth_token_secret = step3_response["oauth_token_secret"]

            # get basic user information
            params = {"user_id": twitter_id}
            userInfo = call_api.twitter_api("GET", "/1.1/users/show.json", params, oauth_token, oauth_token_secret)
            # get friends
            params = {"user_id": twitter_id, "cursor": "-1"}
            response = call_api.twitter_api("GET", "/1.1/friends/ids.json", params, oauth_token, oauth_token_secret)
            friends = [str(id) for id in response["ids"]]

            m_userInfo = {
                "twitter_id": twitter_id,
                "firstname": (userInfo.get("name") or "").capitalize(),
                "lastname": "",
                "realname": userInfo.get("name") or "",
                "username": userInfo.get("screen_name") or "",
                "picture": userInfo["profile_image_url"],
                "tw_access_token": oauth_token,
                "tw_token_secret": oauth_token_secret,
                "location": userInfo.get("location") or "",
                "website": userInfo.get("url") or "",
                "friends": friends,
            }
            return m_userInfo
        return None