22 lines
		
	
	
		
			757 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			22 lines
		
	
	
		
			757 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| import logging
 | |
| from collections.abc import AsyncIterator
 | |
| from contextlib import asynccontextmanager
 | |
| from typing import Callable, Dict
 | |
| 
 | |
| from pyhon import const
 | |
| from pyhon.connection.handler.base import ConnectionHandler
 | |
| 
 | |
| _LOGGER = logging.getLogger(__name__)
 | |
| 
 | |
| 
 | |
| class HonAnonymousConnectionHandler(ConnectionHandler):
 | |
|     _HEADERS: Dict = ConnectionHandler._HEADERS | {"x-api-key": const.API_KEY}
 | |
| 
 | |
|     @asynccontextmanager
 | |
|     async def _intercept(self, method: Callable, *args, **kwargs) -> AsyncIterator:
 | |
|         kwargs["headers"] = kwargs.pop("headers", {}) | self._HEADERS
 | |
|         async with method(*args, **kwargs) as response:
 | |
|             if response.status == 403:
 | |
|                 _LOGGER.error("Can't authenticate anymore")
 | |
|             yield response
 |