コード例 #1
0
ファイル: views.py プロジェクト: issasouktel/teach-api
    def post(self, request, **args):

        if not args["arg1"]:
            CREDLY_USER_EMAIL = request.POST['email']
            CREDLY_USER_PASSWORD = request.POST['password']
            self.credly = slumber.API(self.api_endpoint,
                                      auth=ApiAuth(CREDLY_API_KEY, CREDLY_APP_SECRET, email=CREDLY_USER_EMAIL,
                                                   password=CREDLY_USER_PASSWORD), append_slash=False)
        try:
            result = self.build_api_request(**args).post(**request.POST)
            if request.user.is_authenticated():
                save_user_token(request.user.id,result["data"])

        except HttpNotFoundError as error:
            result = {"err": "API not found"}

        return JsonResponse(result)
コード例 #2
0
ファイル: views.py プロジェクト: issasouktel/teach-api
    def create_credly_user(self, user ):

        #first check if user already exist
        members_api = CredlyMember()
        member = members_api.get_user_by_email(user.email)

        if member:
            return False

        #if user not exist build request and created new one
        try:
            result = self.credly.authenticate().register().post(email=user.email, password=user.password)
            #save it to credly table
            save_user_token(user.id,result["data"])
        except HttpNotFoundError as error:
            print error
            pass
        return True
コード例 #3
0
ファイル: views.py プロジェクト: alicoding/teach-api
def request_credly_token(user, email=None, password=None):
    token = None
    profile = check_local_profile(user.id)
    credly = get_credly(email, password)
    token_age = get_credly_token_age(user.id)

    # no acccess_token was ever set, so set one up.
    if not token_age:
        print "this user was never linked to Credly before. Linking..."
        moz_credly = get_our_credly()
        moz_token = get_our_access_token()
        try:
            is_member = moz_credly.members().get(email=email, access_token=moz_credly)
            # if we've not hit an exception, this is a known credly user and we should
            # be able to get an access and refresh token associated with their account.
            try:
                result = credly.authenticate.post()
                token = result['data']
                save_user_token(user.id, token)
                print "Linked teach-api user to Credly."
            except HttpClientError as clienterror:
                token = clienterror.response.status_code
                pass
        except HttpNotFoundError as member_error:
            print "No Credly account found for the supplied email, creating a new account..."
            # not a known credly user, we'll have to register them
            headers = XAPIHeaders()
            params = { 'access_token': moz_token }
            data = { 'email': email, 'password': password, 'display_name': user.username, 'is_email_verified': 1 }
            url = CREDLY_API_URL + 'authenticate/register'
            try:
                result = requests.post(url, params=params, headers=headers, data=data)
                response = json.loads(result.text)
                token = response['data']
                save_user_token(user.id, token)
                print "Created new Credly account for teach-api user."
            except HttpClientError as clienterror:
                token = clienterror.response.status_code
                pass
            pass

    # access_token is still good
    elif token_age < 80:
        print "access token is still valid, using directly"
        token = { 'token': profile.access_token, 'refresh_token': profile.refresh_token }

    # access token expired, user will have to reauthenticate with their password
    elif token_age > 90:
        #
        # FIXME:TODO: THIS SHOULD BE A CRON JOB OF SOME SORT BUT CAN LIVE HERE FOR NOW.
        #
        print "a new access token needs to be requested"
        result = credly.authenticate.post()
        token = result['data']
        save_user_token(user.id, token)

    # refresh the access_token
    else:
        print "access token requires a refresh"
        result = credly.authenticate.refresh.post({ 'refresh_token': profile.refresh_token })
        token = result['data']
        save_user_token(user.id, token)

    return token
コード例 #4
0
ファイル: views.py プロジェクト: alicoding/teach-api
def request_credly_token(user, email=None, password=None):
    token = None
    profile = check_local_profile(user.id)
    credly = get_credly(email, password)
    token_age = get_credly_token_age(user.id)

    # no acccess_token was ever set, so set one up.
    if not token_age:
        print "this user was never linked to Credly before. Linking..."
        moz_credly = get_our_credly()
        moz_token = get_our_access_token()
        try:
            is_member = moz_credly.members().get(email=email,
                                                 access_token=moz_credly)
            # if we've not hit an exception, this is a known credly user and we should
            # be able to get an access and refresh token associated with their account.
            try:
                result = credly.authenticate.post()
                token = result['data']
                save_user_token(user.id, token)
                print "Linked teach-api user to Credly."
            except HttpClientError as clienterror:
                token = clienterror.response.status_code
                pass
        except HttpNotFoundError as member_error:
            print "No Credly account found for the supplied email, creating a new account..."
            # not a known credly user, we'll have to register them
            headers = XAPIHeaders()
            params = {'access_token': moz_token}
            data = {
                'email': email,
                'password': password,
                'display_name': user.username,
                'is_email_verified': 1
            }
            url = CREDLY_API_URL + 'authenticate/register'
            try:
                result = requests.post(url,
                                       params=params,
                                       headers=headers,
                                       data=data)
                response = json.loads(result.text)
                token = response['data']
                save_user_token(user.id, token)
                print "Created new Credly account for teach-api user."
            except HttpClientError as clienterror:
                token = clienterror.response.status_code
                pass
            pass

    # access_token is still good
    elif token_age < 80:
        print "access token is still valid, using directly"
        token = {
            'token': profile.access_token,
            'refresh_token': profile.refresh_token
        }

    # access token expired, user will have to reauthenticate with their password
    elif token_age > 90:
        #
        # FIXME:TODO: THIS SHOULD BE A CRON JOB OF SOME SORT BUT CAN LIVE HERE FOR NOW.
        #
        print "a new access token needs to be requested"
        result = credly.authenticate.post()
        token = result['data']
        save_user_token(user.id, token)

    # refresh the access_token
    else:
        print "access token requires a refresh"
        result = credly.authenticate.refresh.post(
            {'refresh_token': profile.refresh_token})
        token = result['data']
        save_user_token(user.id, token)

    return token