Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
    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)
Пример #4
0
    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)
Пример #5
0
    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)