コード例 #1
0
 def test_split_name(self):
     self.assertEqual(split_name('John Doe'),
                      ('John', 'Doe'))
     self.assertEqual(split_name('John'),
                      ('John', ''))
     self.assertEqual(split_name('John M Doe'),
                      ('John', 'M Doe'))
     self.assertEqual(split_name(''),
                      ('', ''))
コード例 #2
0
def twitter_callback(request):
    settings = request.registry.settings

    try:
        oauth_token = request.params['oauth_token']
    except KeyError:
        return HTTPBadRequest('Missing required oauth_token')

    try:
        oauth_verifier = request.params['oauth_verifier']
    except KeyError:
        return HTTPBadRequest('Missing required oauth_verifier')

    try:
        saved_oauth_token = request.session['oauth_token']
    except KeyError:
        return HTTPBadRequest('No oauth_token was found in the session')

    if saved_oauth_token != oauth_token:
        return HTTPUnauthorized("OAuth tokens don't match")
    else:
        del request.session['oauth_token']

    access_token_url = settings['twitter_access_token_url']

    params = (
        ('oauth_token', oauth_token),
        )

    auth = auth_header('POST', access_token_url, params, settings, oauth_token)

    response = requests.post(access_token_url,
                             data='oauth_verifier=%s' % oauth_verifier,
                             headers={'Authorization': auth})

    if response.status_code != 200:
        return HTTPUnauthorized(response.text)

    response_args = dict(urlparse.parse_qsl(response.text))
    #oauth_token_secret = response_args['oauth_token_secret']
    oauth_token = response_args['oauth_token']
    user_id = response_args['user_id']
    screen_name = response_args['screen_name']

    existing_user = user_from_provider_id(request.db, 'twitter', user_id)
    if existing_user is None:
        # fetch Twitter info only if this is the first time for
        # the user sice Twitter has very strong limits for using
        # its APIs
        twitter_info = get_user_info(settings, user_id, oauth_token)
        first_name, last_name = split_name(twitter_info['name'])
        info = {
            'screen_name': screen_name,
            'first_name': first_name,
            'last_name': last_name,
            }
    else:
        info = {}

    return register_or_update(request, 'twitter', user_id, info,
                              request.route_path('home'))
コード例 #3
0
 def test_split_name_empty_string(self):
     self.assertEqual(split_name(""), ("", ""))
コード例 #4
0
 def test_split_name_three_words(self):
     self.assertEqual(split_name("John M Doe"), ("John", "M Doe"))
コード例 #5
0
 def test_split_name_one_word(self):
     self.assertEqual(split_name("John"), ("John", ""))
コード例 #6
0
 def test_split_name_two_words(self):
     self.assertEqual(split_name("John Doe"), ("John", "Doe"))
コード例 #7
0
ファイル: views.py プロジェクト: norsig/yith-library-server
def twitter_callback(request):
    settings = request.registry.settings

    try:
        oauth_token = request.params['oauth_token']
    except KeyError:
        return HTTPBadRequest('Missing required oauth_token')

    try:
        oauth_verifier = request.params['oauth_verifier']
    except KeyError:
        return HTTPBadRequest('Missing required oauth_verifier')

    try:
        saved_oauth_token = request.session['oauth_token']
    except KeyError:
        return HTTPBadRequest('No oauth_token was found in the session')

    if saved_oauth_token != oauth_token:
        return HTTPUnauthorized("OAuth tokens don't match")
    else:
        del request.session['oauth_token']

    access_token_url = settings['twitter_access_token_url']

    params = (
        ('oauth_token', oauth_token),
        ('oauth_verifier', oauth_verifier),
    )

    auth = auth_header('POST', access_token_url, params, settings, oauth_token)

    response = requests.post(access_token_url,
                             headers={'Authorization': auth})

    if response.status_code != 200:
        return HTTPUnauthorized(response.text)

    response_args = dict(urlparse.parse_qsl(response.text))
    # moauth_token_secret = response_args['oauth_token_secret']
    oauth_token = response_args['oauth_token']
    user_id = response_args['user_id']
    screen_name = response_args['screen_name']

    existing_user = user_from_provider_id('twitter', user_id)
    if existing_user is None:
        # fetch Twitter info only if this is the first time for
        # the user sice Twitter has very strong limits for using
        # its APIs
        twitter_info = get_user_info(settings, user_id)
        first_name, last_name = split_name(twitter_info['name'])
        info = {
            'screen_name': screen_name,
            'first_name': first_name,
            'last_name': last_name,
        }
    else:
        info = {}

    return register_or_update(request, 'twitter', user_id, info,
                              request.route_path('home'))
コード例 #8
0
 def test_split_name(self):
     self.assertEqual(split_name("John Doe"), ("John", "Doe"))
     self.assertEqual(split_name("John"), ("John", ""))
     self.assertEqual(split_name("John M Doe"), ("John", "M Doe"))
     self.assertEqual(split_name(""), ("", ""))
コード例 #9
0
 def test_split_name_empty_string(self):
     self.assertEqual(split_name(''), ('', ''))
コード例 #10
0
 def test_split_name_three_words(self):
     self.assertEqual(split_name('John M Doe'), ('John', 'M Doe'))
コード例 #11
0
 def test_split_name_one_word(self):
     self.assertEqual(split_name('John'), ('John', ''))
コード例 #12
0
 def test_split_name_two_words(self):
     self.assertEqual(split_name('John Doe'), ('John', 'Doe'))