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) 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_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 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 print "Fetching access token..." client = TestOAuthClient(SERVER_URL, CONSUMER_KEY, CONSUMER_SECRET) ACCESS_TOKEN = client.fetch_access_token(REQUEST_TOKEN)