def start_session(self, refresh_token: str = None, exchange_token: str = None) -> dict: if refresh_token: params = dict(grant_type='refresh_token', refresh_token=refresh_token, token_type='eg1') elif exchange_token: params = dict(grant_type='exchange_code', exchange_code=exchange_token, token_type='eg1') else: raise ValueError('At least one token type must be specified!') r = self.session.post( f'https://{self._oauth_host}/account/api/oauth/token', data=params, auth=self._oauth_basic) # Only raise HTTP exceptions on server errors if r.status_code >= 500: r.raise_for_status() j = r.json() if 'error' in j: self.log.warning( f'Login to EGS API failed with errorCode: {j["errorCode"]}') raise InvalidCredentialsError(j['errorCode']) self.user = j self.session.headers[ 'Authorization'] = f'bearer {self.user["access_token"]}' return self.user
def resume_session(self, session): self.session.headers['Authorization'] = f'bearer {session["access_token"]}' r = self.session.get(f'https://{self._oauth_host}/account/api/oauth/verify') if r.status_code >= 500: r.raise_for_status() j = r.json() if 'errorMessage' in j: self.log.warning(f'Login to EGS API failed with errorCode: {j["errorCode"]}') raise InvalidCredentialsError(j['errorCode']) # update other data session.update(j) self.user = session return self.user