

def _on_authentication_verified(self, future, response):
    if (response.error or (b'is_valid:true' not in response.body)):
        future.set_exception(AuthError(('Invalid OpenID response: %s' % (response.error or response.body))))
        return
    ax_ns = None
    for name in self.request.arguments:
        if (name.startswith('openid.ns.') and (self.get_argument(name) == u('http://openid.net/srv/ax/1.0'))):
            ax_ns = name[10:]
            break

    def get_ax_arg(uri):
        if (not ax_ns):
            return u('')
        prefix = (('openid.' + ax_ns) + '.type.')
        ax_name = None
        for name in self.request.arguments.keys():
            if ((self.get_argument(name) == uri) and name.startswith(prefix)):
                part = name[len(prefix):]
                ax_name = ((('openid.' + ax_ns) + '.value.') + part)
                break
        if (not ax_name):
            return u('')
        return self.get_argument(ax_name, u(''))
    email = get_ax_arg('http://axschema.org/contact/email')
    name = get_ax_arg('http://axschema.org/namePerson')
    first_name = get_ax_arg('http://axschema.org/namePerson/first')
    last_name = get_ax_arg('http://axschema.org/namePerson/last')
    username = get_ax_arg('http://axschema.org/namePerson/friendly')
    locale = get_ax_arg('http://axschema.org/pref/language').lower()
    user = dict()
    name_parts = []
    if first_name:
        user['first_name'] = first_name
        name_parts.append(first_name)
    if last_name:
        user['last_name'] = last_name
        name_parts.append(last_name)
    if name:
        user['name'] = name
    elif name_parts:
        user['name'] = u(' ').join(name_parts)
    elif email:
        user['name'] = email.split('@')[0]
    if email:
        user['email'] = email
    if locale:
        user['locale'] = locale
    if username:
        user['username'] = username
    claimed_id = self.get_argument('openid.claimed_id', None)
    if claimed_id:
        user['claimed_id'] = claimed_id
    future.set_result(user)

dataset/ETHPy150Open D-L/SimpleBookMarks/src/tornado/auth.py OpenIdMixin._on_authentication_verified/original