def request(self: OAuthClient, method, url, token=None, **kwargs: Any): if self.api_base_url and not url.startswith(('https://', 'http://')): url = urlparse.urljoin(self.api_base_url, url) if kwargs.pop('cache', False): if not current_user.is_authenticated: current_app.logger.warn( f'Attempted to utilize user cache for url: {url}') cache_name = str(current_user.id) fetch_session = lambda: get_cached_session( self, cache_name, RedisCache(cache_name, connection=current_app.redis)) else: fetch_session = self._get_session with fetch_session() as session: if kwargs.get('withhold_token'): return session.request(method, url, **kwargs) request = kwargs.pop('request', None) if token is None and self._fetch_token and request: token = self._fetch_token(request) if token is None: raise MissingTokenError() session.token = token return session.request(method, url, **kwargs)
async def _http_request(ctx, session, method, url, token, kwargs): request = kwargs.pop('request', None) withhold_token = kwargs.get('withhold_token') if ctx.api_base_url and not url.startswith(('https://', 'http://')): url = urlparse.urljoin(ctx.api_base_url, url) if withhold_token: return await session.request(method, url, **kwargs) if token is None and ctx._fetch_token and request: token = await ctx._fetch_token(request) if token is None: raise MissingTokenError() session.token = token return await session.request(method, url, **kwargs)
def request(self, method, url, token=None, **kwargs): if self.api_base_url and not url.startswith(('https://', 'http://')): url = urlparse.urljoin(self.api_base_url, url) with self._get_oauth_client() as session: request = kwargs.pop('request', None) if kwargs.get('withhold_token'): return session.request(method, url, **kwargs) if token is None and self._fetch_token and request: token = self._fetch_token(request) if token is None: raise MissingTokenError() session.token = token return session.request(method, url, **kwargs)
def _send_token_request(self, session, method, url, token, kwargs): request = kwargs.pop('request', None) withhold_token = kwargs.get('withhold_token') if self.api_base_url and not url.startswith(('https://', 'http://')): url = urlparse.urljoin(self.api_base_url, url) if withhold_token: return session.request(method, url, **kwargs) if token is None and self._fetch_token: token = self._get_requested_token(request) if token is None: raise MissingTokenError() session.token = token return session.request(method, url, **kwargs)
async def request(self, method, url, token=None, **kwargs): if self.api_base_url and not url.startswith(('https://', 'http://')): url = urlparse.urljoin(self.api_base_url, url) withhold_token = kwargs.get('withhold_token') if not withhold_token: metadata = await self.load_server_metadata() else: metadata = {} async with self._get_oauth_client(**metadata) as client: request = kwargs.pop('request', None) if withhold_token: return await client.request(method, url, **kwargs) if token is None and request: token = await self._fetch_token(request) if token is None: raise MissingTokenError() client.token = token return await client.request(method, url, **kwargs)