Get data from the TMDb API via :py:func:`aiohttp.get`.

        Notes:
          Updates configuration (if required) on successful requests.

        Arguments:
          url (:py:class:`str`): The endpoint URL and params.

        Returns:
          :py:class:`dict`: The parsed JSON result.

async def get_data(self, url):
        """Get data from the TMDb API via :py:func:`aiohttp.get`.

        Notes:
          Updates configuration (if required) on successful requests.

        Arguments:
          url (:py:class:`str`): The endpoint URL and params.

        Returns:
          :py:class:`dict`: The parsed JSON result.

        """
        logger.debug('making request to %r', url)
        with aiohttp.ClientSession() as session:
            async with session.get(url, headers=self.headers) as response:
                body = json.loads((await response.read()).decode('utf-8'))
                if response.status == HTTPStatus.OK:
                    if url != self.url_builder('configuration'):
                        await self._update_config()
                    return body
                elif response.status == HTTPStatus.TOO_MANY_REQUESTS:
                    timeout = self.calculate_timeout(
                        response.headers['Retry-After'],
                    )
                    logger.warning(
                        'Request limit exceeded, waiting %s seconds',
                        timeout,
                    )
                    await asyncio.sleep(timeout)
                    return await self.get_data(url)
                logger.warning(
                    'request failed %s: %r',
                    response.status,
                    body.get('status_message', '<no message>')
                )