def login(): if not session.get("access_token"): return redirect("/oauth2callback") with requests.Session() as s: s.auth = OAuth2BearerToken(session["access_token"]) r = s.get( "https://www.googleapis.com/plus/v1/people/me?access_token={}". format(session.get("access_token"))) r.raise_for_status() data = r.json() if data["domain"] != "ousd.org": return "Please Sign in with your OUSD account" # Save Necessary variables session["displayName"] = data["displayName"] session["image"] = data["image"]["url"] user = User() for i in User.objects: if i.name == session["displayName"]: session["wallet"] = i.wallet session["reputation"] = i.reputation return redirect("/") user.name = session["displayName"] user.image = session["image"] user.wallet = "10" user.reputation = "0" session["wallet"] = user.wallet session["reputation"] = user.reputation user.save() return redirect("/")
def get_session_headers() -> tuple: """ This method is to get the session and headers object for authenticating the api requests using credentials. Args: Returns: tuple """ # getting the credentials and project details for gcp project credentials, your_project_id = google.auth.default( scopes=["https://www.googleapis.com/auth/cloud-platform"]) # getting request object auth_req = google.auth.transport.requests.Request() credentials.refresh(auth_req) # refresh token auth_token = credentials.token headers = { 'Accept': 'application/json', 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + auth_token } with requests.Session() as session: session.auth = OAuth2BearerToken(auth_token) return (session, headers)
def send_post_request_with_Auth2(request_url, access_token, request_parameters): with requests.Session() as s: s.auth = OAuth2BearerToken(access_token) r = s.post(request_url, request_parameters) r.raise_for_status() data = r.json()
def login(): if not session.get("access_token"): return redirect("/oauth2callback") with requests.Session() as s: s.auth = OAuth2BearerToken(session["access_token"]) r = s.get("https://www.googleapis.com/plus/v1/people/me?access_token={}".format( session.get("access_token"))) r.raise_for_status() data = r.json() # Save Necessary variables session["displayName"] = data["displayName"] session["image"] = data["image"]["url"] user = User() # check if user exists for i in User.objects: if i.name == session["displayName"]: return redirect("/") #if not, create a new one user.name = data["displayName"] user.image = data["image"]["url"] user.save() return redirect("/")
def send_delete_request_with_Auth2(request_url, access_token): with requests.Session() as s: s.auth = OAuth2BearerToken(access_token) r = s.delete(request_url) r.raise_for_status() data = r.json()
def teslaSetOperationMode(self, mode): #if self.connectionEstablished: S = self.__teslaConnect() with requests.Session() as s: try: s.auth = OAuth2BearerToken(S['access_token']) if mode in self.OPERATING_MODES: payload = {'default_real_mode': mode} r = s.post(self.TESLA_URL + self.API + '/energy_sites' + self.site_id + '/operation', json=payload) site = r.json() if site['response']['code'] < 210: self.site_info['default_real_mode'] = mode return (True) else: return (False) else: return (False) #site="wrong mode supplied" + str(mode) #LOGGER.debug(site) except Exception as e: LOGGER.error('Exception teslaSetOperationMode: ' + str(e)) LOGGER.error('Error setting operation mode') return (False)
def __tesla_refresh_token(self): S = {} if self.Rtoken: data = {} data['grant_type'] = 'refresh_token' data['client_id'] = 'ownerapi' data['refresh_token'] = self.Rtoken data['scope'] = 'openid email offline_access' resp = requests.post('https://auth.tesla.com/oauth2/v3/token', data=data) S = json.loads(resp.text) if 'refresh_token' in S: self.Rtoken = S['refresh_token'] else: self.Rtoken = None data = {} data['grant_type'] = 'urn:ietf:params:oauth:grant-type:jwt-bearer' data['client_id'] = self.CLIENT_ID data['client_secret'] = self.CLIENT_SECRET with requests.Session() as s: try: s.auth = OAuth2BearerToken(S['access_token']) r = s.post(self.TESLA_URL + '/oauth/token', data) S = json.loads(r.text) except Exception as e: LOGGER.error('Exception __tesla_refersh_token: ' + str(e)) pass s.close() time.sleep(1) #self.S = S #self.S['created_at'] = datetime.now() return S
def google_index(): if current_user.is_authenticated: return redirect(url_for('index')) if not session.get("access_token"): return redirect("/google/oauth2callback") with requests.Session() as s: s.auth = OAuth2BearerToken(session["access_token"]) r = s.get("https://www.googleapis.com/plus/v1/people/me") r.raise_for_status() data = r.json() name = str(data.get("name")) email = str(data.get("email")) user = Usergoogle.query.filter_by(email=Usergoogle.email).first() Session['name'] = name #user.authenticated = True if user is None: user = Usergoogle(email=email, name=name) g.user = user db.session.add(user) db.session.commit() app.logger.info(user.id) login_user(user) Session['id'] = user.id A['user'] = False return render_template('index.html', user=True)
def tesla_vins(self,email,password,pwd): """ Returns all VIN numbers associated with specified email and password """ S = self.__tesla_connect(email, password) out = {} out["count"] = 0 with requests.Session() as s: try: s.auth = OAuth2BearerToken(S['access_token']) r = s.get(self.TESLA_URL + self.API + '/vehicles') vehicle = r.json() L = vehicle['count'] out["vehicle"] = {} out["count"] = L for i in range(0,L): vin=vehicle['response'][i]['vin'] if len(pwd) == 0: asset_id=vin else: asset_id = (vin + pwd).encode("utf-8") asset_id = hashlib.sha256(asset_id).hexdigest() checksum = self.checksum(asset_id,True) out["vehicle"][str(i)] = asset_id + checksum except: pass return out
def oauth2callback(): code = request.args.get("code") error = request.args.get("error") if error: return "error :( {!r}".format(error) if not code: return redirect( google_auth.authorize_url( scope=["email"], response_type="code", )) data = google_auth.get_token( code=code, grant_type="authorization_code", ) with requests.Session() as s: s.auth = OAuth2BearerToken(data["access_token"]) discovery_request = s.get( "https://accounts.google.com/.well-known/openid-configuration") discovery_request.raise_for_status() userinfo_endpoint = discovery_request.json()["userinfo_endpoint"] userinfo_request = s.get(userinfo_endpoint) userinfo_request.raise_for_status() session["email"] = userinfo_request.json()["email"] return redirect(url_for("auth.login"))
def teslaSetBackoffLevel(self, backupPercent): #if self.connectionEstablished: LOGGER.debug('teslaSetBackoffLevel ' + str(backupPercent)) S = self.__teslaConnect() with requests.Session() as s: try: s.auth = OAuth2BearerToken(S['access_token']) if backupPercent >= 0 and backupPercent <= 100: payload = {'backup_reserve_percent': backupPercent} r = s.post(self.TESLA_URL + self.API + '/energy_sites' + self.site_id + '/backup', json=payload) site = r.json() if site['response']['code'] < 210: self.site_info[ 'backup_reserve_percent'] = backupPercent return (True) else: return (False) else: return (False) #site="Backup Percent out of range 0-100:" + str(backupPercent) #LOGGER.debug(site) except Exception as e: LOGGER.error('Exception teslaSetBackoffLEvel: ' + str(e)) LOGGER.error('Error setting bacup percent') return (False)
def teslaSetTimeOfUse(self): #if self.connectionEstablished: temp = {} S = self.__teslaConnect() with requests.Session() as s: try: s.auth = OAuth2BearerToken(S['access_token']) temp['tou_settings'] = {} temp['tou_settings']['optimization_strategy'] = self.touMode temp['tou_settings']['schedule'] = self.touScheduleList payload = temp r = s.post(self.TESLA_URL + self.API + '/energy_sites' + self.site_id + '/time_of_use_settings', json=payload) site = r.json() if site['response']['code'] < 210: self.site_info['tou_settings'][ 'optimization_strategy'] = self.touMode self.site_info['tou_settings'][ 'schedule'] = self.touScheduleList return (True) else: return (False) except Exception as e: LOGGER.error('Exception teslaSetTimeOfUse: ' + str(e)) LOGGER.error('Error setting time of use parameters') return (False)
def google_index(): if not session.get("access_token"): code = request.args.get("code") error = request.args.get("error") if error: return "error :( {!r}".format(error) if not code: login() data = google_auth.get_token( code=code, grant_type="authorization_code", ) session["access_token"] = data.get("access_token") if session["access_token"]: with requests.Session() as s: s.auth = OAuth2BearerToken(session["access_token"]) r = s.get("https://www.googleapis.com/plus/v1/people/me") r.raise_for_status() data = r.json() for email in data["emails"]: if not checkpermissions(email["value"]): return Response("<script>window.location.href=\"/login\"</script>",status=401) return Response("<script>window.location.href=\"/\"</script>",status=200) return Response("<script>window.location.href=\"/login\"</script>",status=401)
def login(): if not session.get("access_token"): return redirect("/oauth2callback") with requests.Session() as s: s.auth = OAuth2BearerToken(session["access_token"]) r = s.get( "https://www.googleapis.com/plus/v1/people/me?access_token={}". format(session.get("access_token"))) r.raise_for_status() data = r.json() if data["emails"][0]['value'] in displayname(): session["displayName"] = data["displayName"] session["routeName"] = data["displayName"].replace(" ", "_") if usercheck(data["emails"][0]['value']): session["isUser"] = True else: session["isUser"] = False return redirect("/") if usercheck(data["emails"][0]['value']): session["displayName"] = data["displayName"] session["routeName"] = data["displayName"].replace(" ", "_") session["isUser"] = True # Creates new user if display is not in a User object: createuser(data["displayName"], data["emails"][0]['value']) else: session["displayName"] = data["displayName"] session["routeName"] = data["displayName"].replace(" ", "_") session["isUser"] = False # Creates new user if display is not in a User object: donorcreate(data["displayName"], data["emails"][0]['value']) return redirect("/")
def userExists(email): url = 'https://www.googleapis.com/admin/directory/v1/users/' + email with requests.Session() as s: s.auth = OAuth2BearerToken(self.__webdev_cred.token) r = s.get(url) if (r.status_code == 404): return False return True
def google_index(): if not session.get("access_token"): return redirect("/google/oauth2callback") with requests.Session() as s: s.auth = OAuth2BearerToken(session["access_token"]) r = s.get("https://www.googleapis.com/plus/v1/people/me") r.raise_for_status() data = r.json() return "Hello, {}!".format(data["displayName"])
def _get_session(self) -> Session: """ This method create the session object for request :return: session object """ with Session() as session: session.auth = OAuth2BearerToken(self._auth_token) return session
def pco_index(): info = "" if not session.get("access_token"): return redirect("/auth/callback") with requests.Session() as s: s.auth = OAuth2BearerToken(session["access_token"]) r = s.get("https://api.planningcenteronline.com/people/v2/people") r.raise_for_status() data = r.json() return jsonify(data)
def query(self): with requests.Session() as session: session.auth = OAuth2BearerToken(self.access_token) response = session.get(self.url) try: response.raise_for_status() except HTTPError: pass data = response.json() return data
def jg_index(): if not session.get("access_token"): return "not logged in" with requests.Session() as s: s.auth = OAuth2BearerToken(session["access_token"]) r = s.get("http://api.justgiving.com/v1/account/getconsumerdetails") r.raise_for_status() data = r.json() return data
def teslaGetProduct(self): S = self.__teslaConnect() with requests.Session() as s: try: s.auth = OAuth2BearerToken(S['access_token']) r = s.get(self.TESLA_URL + self.API + "/products") products = r.json() return (products) except Exception as e: LOGGER.error('Exception teslaGetProduct: ' + str(e)) LOGGER.error('Error getting product info') return (None)
def course_list(self, teacherEmail): cred = self.__mentor_cred http = _auth.authorized_http(cred) cred.refresh(http._request) url = "https://classroom.googleapis.com/v1/courses?courseStates=ACTIVE&teacherId=" + teacherEmail headers = { 'Accept': 'application/json', } with requests.Session() as s: s.auth = OAuth2BearerToken(cred.token) r = s.get(url, headers=headers) return r.text
def callapi(request): profile_endpoint = f'{settings.VERACITY_MYSERVICE_ENDPOINT}/my/profile' social = request.user.social_auth.get( provider=settings.SOCIAL_AUTH_AZUREAD_B2C_OAUTH2_SCHEMA) print(social.extra_data["access_token"]) context = {} with requests.Session() as s: s.auth = OAuth2BearerToken(social.extra_data["access_token"]) r = s.get(profile_endpoint) r.raise_for_status() data = r.json() context["result"] = data return render(request, 'api.html', context)
def profile(user): if not session.get("access_token"): return redirect("/oauth2callback") with requests.Session() as s: s.auth = OAuth2BearerToken(session["access_token"]) r = s.get( "https://www.googleapis.com/plus/v1/people/me?access_token={}". format(session.get("access_token"))) r.raise_for_status() data = r.json() session["displayName"] = data["displayName"] session["routeName"] = data["displayName"].replace(" ", "_") return render_template("profile.html", data=data)
def flight(origin, destination, departureDate, returnDate, adults, children, infants, token): conn = psycopg2.connect(host=pg_host, database=pg_db, user=pg_user, password=pg_pasword) cur = conn.cursor() cur.execute("select token from users where token = %s;", (token, )) rows = cur.fetchall() cur.close() conn.close() if (rows == []): data = '3003' else: access_token = get_token() url2 = "https://test.api.amadeus.com/v2/shopping/flight-offers" query = {} if (origin != None or origin == ""): query["originLocationCode"] = origin if (destination != None or destination == ""): query["destinationLocationCode"] = destination if (departureDate != None or departureDate == ""): query["departureDate"] = departureDate if (returnDate != None or returnDate == ""): query["returnDate"] = returnDate if (adults != None or adults == ""): query["adults"] = adults if (children != None or children == ""): query["children"] = children if (infants != None or infants == ""): query["infants"] = infants query['max'] = '50' with requests.Session() as s: s.auth = OAuth2BearerToken(access_token) s.params = query r = s.get(url2) r.raise_for_status() data = r.json() return data
def __tesla_connect(self,email, pwd): """ Checks if valid email and password """ code_verifier = ''.join(random.choices(string.ascii_letters+string.digits, k=86)) code_challenge = hashlib.sha256(code_verifier.encode('utf-8')).hexdigest() data = {} data['client_id']='ownerapi' data['code_challenge']=code_challenge data['code_challenge_method']='S256' data['redirect_uri']='https://auth.tesla.com/void/callback' data['response_type']='code' data['scope']='openid email offline_access' data['state']='123' data['login_hint']=email r = requests.get('https://auth.tesla.com/oauth2/v3/authorize', data) cookies = r.cookies data = self.html_parse(data,r.text) data['identity'] = email data['credential'] = pwd r = requests.post('https://auth.tesla.com/oauth2/v3/authorize', data=data, cookies=cookies, allow_redirects=False) code = self.myparse2(r.text,'code=') data = {} data['grant_type'] = 'authorization_code' data['client_id'] = 'ownerapi' data['code'] = code data['code_verifier'] = code_verifier data['redirect_uri'] = 'https://auth.tesla.com/void/callback' r = requests.post('https://auth.tesla.com/oauth2/v3/token', data=data) S = json.loads(r.text) data = {} data['grant_type'] = 'urn:ietf:params:oauth:grant-type:jwt-bearer' data['client_id']=self.CLIENT_ID data['client_secret']=self.CLIENT_SECRET with requests.Session() as s: try: s.auth = OAuth2BearerToken(S['access_token']) r = s.post(self.TESLA_URL + '/oauth/token',data) S = json.loads(r.text) except: pass time.sleep(1) return S
def prove(): access_token = get_token() url2 = "https://test.api.amadeus.com/v1/shopping/flight-offers" query = {'origin': 'NYC', 'destination': 'MAD', 'departureDate':'2020-10-01', 'max':'8'} with requests.Session() as s: s.auth = OAuth2BearerToken(access_token) s.params = query r = s.get(url2) r.raise_for_status() data = r.json() return data
def query(self): """The request that returns a JSON file of the API call given a url. :return: the `base_url` and the `end_url`. :rtype: :class: `json` """ with requests.Session() as session: session.auth = OAuth2BearerToken(self.access_token) response = session.get(self.url) try: response.raise_for_status() except HTTPError: pass data = response.json() return data
def login(): if not session.get("access_token"): return redirect("/oauth2callback") with requests.Session() as s: s.auth = OAuth2BearerToken(session["access_token"]) r = s.get( "https://www.googleapis.com/plus/v1/people/me?access_token={}". format(session.get("access_token"))) r.raise_for_status() data = r.json() # Save Necessary variables session["displayName"] = data["displayName"] session["image"] = data["image"]["url"] return redirect("/")
def account_create(self, firstName, lastName, personalEmail): http = _auth.authorized_http(self.__webdev_cred) self.__webdev_cred.refresh(http._request) url = "https://www.googleapis.com/admin/directory/v1/users" headers = { # 'Authorization': 'Bearer' delegated_credentials.token, 'Accept': 'application/json', 'Content-Type': 'application/json' } # checking if the email id already exists, adds an id to the end to differentiate addedID = 0 # on repeat, email will start from [email protected] def userExists(email): url = 'https://www.googleapis.com/admin/directory/v1/users/' + email with requests.Session() as s: s.auth = OAuth2BearerToken(self.__webdev_cred.token) r = s.get(url) if (r.status_code == 404): return False return True primaryEmail = firstName + '.' + lastName + '@villagementors.org' while (userExists(primaryEmail)): addedID += 1 primaryEmail = firstName + '.' + lastName + \ str(addedID) + '@villagementors.org' pwd = 'VBB' + random.choice(['!', '@', '#', '$', '%', '&']) + \ str(random.randint(100000000, 1000000000)) data = ''' { "primaryEmail": "%s", "name": { "familyName": "%s", "givenName": "%s" }, "password": "******", "changePasswordAtNextLogin": "******", "recoveryEmail": "%s", } ''' % (primaryEmail, lastName, firstName, pwd, personalEmail) with requests.Session() as s: s.auth = OAuth2BearerToken(self.__webdev_cred.token) r = s.post(url, headers=headers, data=data) return (primaryEmail, pwd)