示例#1
0
def get_api_resource():

    global result, ticker

    resource_url = "/api/v1/user/exercises/progress_changes"

    client = TestOAuthClient(SERVER_URL, CONSUMER_KEY, CONSUMER_SECRET)
    start = time.time()
    response = client.access_resource(resource_url, ACCESS_TOKEN)
    end = time.time()

    print type(response)
    print "\n"
    parsed_json = json.loads(response)
    print type(parsed_json)
    length = len(parsed_json)
    mclient = MongoClient()
    db = mclient.flexkhan
    progress = db.progress
    # result = db.progress.insert_one(parsed_json[0])
    result = progress.find()
    size = result.count()
    ticker = 0
    while ticker < size:
       date = datetime.strptime(result[ticker]['date'], "%Y-%m-%dT%H:%M:%SZ")
       aware = pytz.timezone('US/Mountain').localize(date)
       utc_dt = aware.astimezone(pytz.utc)
       print utc_dt.strftime("%Y:%m:%d %I:%M:%S")
       ticker += 1

    print "\nTime: %ss\n" % (end - start)
示例#2
0
def profileScrape():

    global POINTS

    resource_url = "/api/v1/user"

    client = TestOAuthClient(SERVER_URL, CONSUMER_KEY, CONSUMER_SECRET)
    start = time.time()
    response = client.access_resource(resource_url, ACCESS_TOKEN)
    mongoclient = MongoClient()
    db = mongoclient.flexkhan


    start = time.time()
    parsed_json = json.loads(response)
    length = len(parsed_json)
    profile = db.profile
    find = profile.find({})
    
    dbCount = profile.find({}).count()-1

    end = time.time()
    if dbCount == 0:
        POINTS = find[0]["points"]

    if parsed_json["points"] == POINTS:
        print "Match"
    else:
        print "No Match"
        result = db.profile.insert_one(parsed_json)
        POINTS = parsed_json["points"]
示例#3
0
def progressUpdate():

    resource_url = "/api/v1/user/exercises/progress_changes"

    client = TestOAuthClient(SERVER_URL, CONSUMER_KEY, CONSUMER_SECRET)
    response = client.access_resource(resource_url, ACCESS_TOKEN)
    mongoclient = MongoClient()
    db = mongoclient.flexkhan

    counter = 0
    while counter == 0:
        start = time.time()
        parsed_json = json.loads(response)
        freshSize = len(parsed_json)
        progress = db.progress
        find = progress.find({})
        currentDBCount = progress.find({}).count()
        
        if currentDBCount != freshSize:
            diff = freshSize - currentDBCount
            diffcounter = diff 
            i = 0
            while i < diffcounter:
                marker = freshSize-diff+i
                print parsed_json[marker]
                print "\n"
                print marker
                result = db.progress.insert_one(parsed_json[marker])
                i += 1
        else:
            print("No diff")
        
        # print "\nTime: %ss\n" % (end - start) 
        counter = 1 
示例#4
0
def api_call(target_version,
             target_api_url,
             session,
             debug=False,
             authenticate=True):
    """
    Generic API call function, that will try to use an authenticated request if available,
    otherwise will fall back to non-authenticated request.
    """
    # TODO : Use requests for both kinds of authentication.
    # usage : api_call("v1", "/badges")
    resource_url = "/api/" + target_version + target_api_url
    try:
        if authenticate and session.REQUEST_TOKEN and session.ACCESS_TOKEN:
            client = TestOAuthClient(session.SERVER_URL, CONSUMER_KEY,
                                     CONSUMER_SECRET)
            response = client.access_resource(resource_url,
                                              session.ACCESS_TOKEN)
        else:
            response = requests.get(session.SERVER_URL + resource_url).content
        json_object = json.loads(response)
    except Exception as e:
        print e, "for target: %(target)s " % {"target": target_api_url}
        return {}
    if (debug):
        print json_object
    return json_object
示例#5
0
def get_request_token():
    server = create_callback_server()

    client = TestOAuthClient(SERVER_URL, CONSUMER_KEY, CONSUMER_SECRET)
    client.start_fetch_request_token('http://127.0.0.1:%d/' % server.server_address[1])

    server.handle_request()
    # REQUEST_TOKEN has now been set
    server.server_close()
示例#6
0
文件: test.py 项目: xmarcosx/khan-api
def get_api_resource():
	resource_url = raw_input("Resource relative url (/api/v1/playlists): ") or "/api/v1/playlists"
	client = TestOAuthClient(SERVER_URL, CONSUMER_KEY, CONSUMER_SECRET)
	start = time.time()
	response = client.access_resource(resource_url, ACCESS_TOKEN)
	end = time.time()
	print "\n"
	print response
	print "\nTime: %ss\n" % (end - start)
示例#7
0
def get_api_resource():

    resource_url = (raw_input("Resource relative url (/api/v1/playlists): ") or
                    "/api/v1/playlists")

    client = TestOAuthClient(SERVER_URL, CONSUMER_KEY, CONSUMER_SECRET)
    response = client.access_resource(resource_url, ACCESS_TOKEN)

    print "\n"
    print response
    print "\n"
def get_api_resource(resource_url = '/api/v1/user/exercises/scientific_notation'):

    #resource_url = '/api/v1/user/exercises/scientific_notation' #JS# raw_input("Resource relative url (/api/v1/playlists): ") \
        #or "/api/v1/playlists"
    

    client = TestOAuthClient(SERVER_URL, CONSUMER_KEY, CONSUMER_SECRET)
    start = time.time()
    response = client.access_resource(resource_url, ACCESS_TOKEN)
    end = time.time()
    return response, start, end
示例#9
0
def get_api_resource():

    resource_url = raw_input(
        "Resource relative url (/api/v1/playlists): ") or "/api/v1/playlists"

    client = TestOAuthClient(SERVER_URL, CONSUMER_KEY, CONSUMER_SECRET)
    response = client.access_resource(resource_url, ACCESS_TOKEN)

    print "\n"
    print response
    print "\n"
示例#10
0
def get_api_resource(
        resource_url='/api/v1/user/exercises/scientific_notation'):

    #resource_url = '/api/v1/user/exercises/scientific_notation' #JS# raw_input("Resource relative url (/api/v1/playlists): ") \
    #or "/api/v1/playlists"

    client = TestOAuthClient(SERVER_URL, CONSUMER_KEY, CONSUMER_SECRET)
    start = time.time()
    response = client.access_resource(resource_url, ACCESS_TOKEN)
    end = time.time()
    return response, start, end
示例#11
0
文件: test.py 项目: lyhiving/khan-api
def get_request_token():
    global REQUEST_TOKEN

    client = TestOAuthClient(SERVER_URL, CONSUMER_KEY, CONSUMER_SECRET)
    client.start_fetch_request_token()

    print "After logging in and authorizing, input token key and secret..."

    request_token_key = raw_input("request token: ")
    request_token_secret = raw_input("request token secret: ")

    REQUEST_TOKEN = OAuthToken(request_token_key, request_token_secret)
示例#12
0
def get_request_token():
    global REQUEST_TOKEN

    client = TestOAuthClient(SERVER_URL, CONSUMER_KEY, CONSUMER_SECRET)
    client.start_fetch_request_token()

    print "After logging in and authorizing, input token key and secret..."

    request_token_key = raw_input("request token: ")
    request_token_secret = raw_input("request token secret: ")

    REQUEST_TOKEN = OAuthToken(request_token_key, request_token_secret)
示例#13
0
    def get_api_resource(self, resourceUrl):

        # Example URLs
        # /api/v1/user/exercises/[email protected]
        # /api/v1/[email protected]
        # /api/v1/exercises

        client = TestOAuthClient(self.SERVER_URL, self.CONSUMER_KEY, self.CONSUMER_SECRET)
        start = time.time()
        response = client.access_resource(resourceUrl, self.ACCESS_TOKEN)
        end = time.time()

        # print "\nTime: %ss\n" % (end - start)
        return response
def get_access_token_from_user():
    client = TestOAuthClient(consts.SERVER_URL, consts.CONSUMER_KEY, consts.CONSUMER_SECRET)
    client.start_fetch_request_token()

    print "After logging in and authorizing, input token key and secret..."

    request_token_key = raw_input("request token: ")
    request_token_secret = raw_input("request token secret: ")

    request_token = OAuthToken(request_token_key, request_token_secret)
    if not request_token:
        raise IOError("Did not get request token.")

    print "Fetching access token..."
    access_token = client.fetch_access_token(request_token)
    if not access_token:
        raise IOError("Did not get access token.")

    return access_token
示例#15
0
def get_access_token_from_user():
    client = TestOAuthClient(consts.SERVER_URL, consts.CONSUMER_KEY,
                             consts.CONSUMER_SECRET)
    client.start_fetch_request_token()

    print "After logging in and authorizing, input token key and secret..."

    request_token_key = raw_input("request token: ")
    request_token_secret = raw_input("request token secret: ")

    request_token = OAuthToken(request_token_key, request_token_secret)
    if not request_token:
        raise IOError("Did not get request token.")

    print "Fetching access token..."
    access_token = client.fetch_access_token(request_token)
    if not access_token:
        raise IOError("Did not get access token.")

    return access_token
示例#16
0
def api_call(target_version, target_api_url, debug=False, authenticate=True):
    """
    Generic API call function, that will try to use an authenticated request if available,
    otherwise will fall back to non-authenticated request.
    """
    # TODO : Use requests for both kinds of authentication.
    # usage : api_call("v1", "/badges")
    resource_url = "/api/" + target_version + target_api_url
    try:
        if authenticate and REQUEST_TOKEN and ACCESS_TOKEN:
            client = TestOAuthClient(SERVER_URL, CONSUMER_KEY, CONSUMER_SECRET)
            response = client.access_resource(resource_url, ACCESS_TOKEN)
        else:
            response = requests.get(SERVER_URL + resource_url).content
        json_object = json.loads(response)
    except Exception as e:
        print e
        return {}
    if(debug):
        print json_object
    return json_object
示例#17
0
def authenticate():
    """
    Adapted from https://github.com/Khan/khan-api/blob/master/examples/test_client/test.py
    First pass at browser based OAuth authentication.
    """
    # TODO: Allow PIN access for non-browser enabled devices.

    server = create_callback_server()

    client = TestOAuthClient(SERVER_URL, CONSUMER_KEY, CONSUMER_SECRET)

    client.start_fetch_request_token(
        'http://127.0.0.1:%d/' % server.server_address[1])

    server.handle_request()

    server.server_close()

    global ACCESS_TOKEN

    ACCESS_TOKEN = client.fetch_access_token(REQUEST_TOKEN)
示例#18
0
def progressScrape():

    resource_url = "/api/v1/user/exercises/progress_changes"

    client = TestOAuthClient(SERVER_URL, CONSUMER_KEY, CONSUMER_SECRET)
    response = client.access_resource(resource_url, ACCESS_TOKEN)
    mongoclient = MongoClient()
    db = mongoclient.flexkhan

    counter = 0
    while counter == 0:
        
        parsed_json = json.loads(response)
        size = len(parsed_json)
        progress = db.progress
        
        i = 0
        while i < size:
            result = db.progress.insert_one(parsed_json[i])
            print("Check!")
            i += 1
        end = time.time()
        # print "\nTime: %ss\n" % (end - start) 
        counter = 1  
    def authenticate(self):
        """
        Adapted from https://github.com/Khan/khan-api/blob/master/examples/test_client/test.py
        First pass at browser based OAuth authentication.
        """
        # TODO: Allow PIN access for non-browser enabled devices.

        if CONSUMER_KEY and CONSUMER_SECRET:

            server = create_callback_server(self)

            client = TestOAuthClient(
                self.SERVER_URL, CONSUMER_KEY, CONSUMER_SECRET)

            client.start_fetch_request_token(
                'http://127.0.0.1:%d/' % server.server_address[1])

            server.handle_request()

            server.server_close()

            self.ACCESS_TOKEN = client.fetch_access_token(self.REQUEST_TOKEN)
        else:
            print "Consumer key and secret not set in secrets.py - authenticated access to API unavailable."
示例#20
0
    def authenticate(self):
        """
        Adapted from https://github.com/Khan/khan-api/blob/master/examples/test_client/test.py
        First pass at browser based OAuth authentication.
        """
        # TODO: Allow PIN access for non-browser enabled devices.

        if CONSUMER_KEY and CONSUMER_SECRET:

            server = create_callback_server(self)

            client = TestOAuthClient(self.SERVER_URL, CONSUMER_KEY,
                                     CONSUMER_SECRET)

            client.start_fetch_request_token('http://127.0.0.1:%d/' %
                                             server.server_address[1])

            server.handle_request()

            server.server_close()

            self.ACCESS_TOKEN = client.fetch_access_token(self.REQUEST_TOKEN)
        else:
            print "Consumer key and secret not set in secrets.py - authenticated access to API unavailable."
示例#21
0
def get_access_token():
    global ACCESS_TOKEN

    client = TestOAuthClient(SERVER_URL, CONSUMER_KEY, CONSUMER_SECRET)
    ACCESS_TOKEN = client.fetch_access_token(REQUEST_TOKEN)
示例#22
0
def get_access_token():
    global ACCESS_TOKEN

    print "Fetching access token..."
    client = TestOAuthClient(SERVER_URL, CONSUMER_KEY, CONSUMER_SECRET)
    ACCESS_TOKEN = client.fetch_access_token(REQUEST_TOKEN)
示例#23
0
文件: test.py 项目: xmarcosx/khan-api
def get_access_token():
    global ACCESS_TOKEN
    client = TestOAuthClient(SERVER_URL, CONSUMER_KEY, CONSUMER_SECRET)
    ACCESS_TOKEN = client.fetch_access_token(REQUEST_TOKEN)
    store_credentials( ACCESS_TOKEN.to_string() )
示例#24
0
    def get_access_token(self):

        client = TestOAuthClient(self.SERVER_URL, self.CONSUMER_KEY, self.CONSUMER_SECRET)
        self.ACCESS_TOKEN = client.fetch_access_token(REQUEST_TOKEN)