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)
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"]
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
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
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()
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)
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
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
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)
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
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
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)
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."
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."
def get_access_token(): global ACCESS_TOKEN client = TestOAuthClient(SERVER_URL, CONSUMER_KEY, CONSUMER_SECRET) ACCESS_TOKEN = client.fetch_access_token(REQUEST_TOKEN)
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)
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() )
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)