Fix messed up parameters in request
This commit is contained in:
		@@ -4,6 +4,7 @@ from contextlib import asynccontextmanager
 | 
				
			|||||||
from typing import Dict, Any
 | 
					from typing import Dict, Any
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import aiohttp
 | 
					import aiohttp
 | 
				
			||||||
 | 
					from yarl import URL
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from pyhon import const
 | 
					from pyhon import const
 | 
				
			||||||
from pyhon.connection.handler.base import ConnectionHandler
 | 
					from pyhon.connection.handler.base import ConnectionHandler
 | 
				
			||||||
@@ -17,10 +18,10 @@ class HonAnonymousConnectionHandler(ConnectionHandler):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @asynccontextmanager
 | 
					    @asynccontextmanager
 | 
				
			||||||
    async def _intercept(
 | 
					    async def _intercept(
 | 
				
			||||||
        self, method: Callback, *args: Any, **kwargs: Any
 | 
					        self, method: Callback, url: str | URL, *args: Any, **kwargs: Dict[str, Any]
 | 
				
			||||||
    ) -> AsyncIterator[aiohttp.ClientResponse]:
 | 
					    ) -> AsyncIterator[aiohttp.ClientResponse]:
 | 
				
			||||||
        kwargs["headers"] = kwargs.pop("headers", {}) | self._HEADERS
 | 
					        kwargs["headers"] = kwargs.pop("headers", {}) | self._HEADERS
 | 
				
			||||||
        async with method(*args, **kwargs) as response:
 | 
					        async with method(url, *args, **kwargs) as response:
 | 
				
			||||||
            if response.status == 403:
 | 
					            if response.status == 403:
 | 
				
			||||||
                _LOGGER.error("Can't authenticate anymore")
 | 
					                _LOGGER.error("Can't authenticate anymore")
 | 
				
			||||||
            yield response
 | 
					            yield response
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,10 @@
 | 
				
			|||||||
import logging
 | 
					import logging
 | 
				
			||||||
from collections.abc import AsyncIterator
 | 
					from collections.abc import AsyncIterator
 | 
				
			||||||
from contextlib import asynccontextmanager
 | 
					from contextlib import asynccontextmanager
 | 
				
			||||||
from typing import Optional, List, Tuple, Any
 | 
					from typing import Optional, List, Tuple, Any, Dict
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import aiohttp
 | 
					import aiohttp
 | 
				
			||||||
 | 
					from yarl import URL
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from pyhon import const
 | 
					from pyhon import const
 | 
				
			||||||
from pyhon.connection.handler.base import ConnectionHandler
 | 
					from pyhon.connection.handler.base import ConnectionHandler
 | 
				
			||||||
@@ -29,9 +30,9 @@ class HonAuthConnectionHandler(ConnectionHandler):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @asynccontextmanager
 | 
					    @asynccontextmanager
 | 
				
			||||||
    async def _intercept(
 | 
					    async def _intercept(
 | 
				
			||||||
        self, method: Callback, *args: Any, **kwargs: Any
 | 
					        self, method: Callback, url: str | URL, *args: Any, **kwargs: Dict[str, Any]
 | 
				
			||||||
    ) -> AsyncIterator[aiohttp.ClientResponse]:
 | 
					    ) -> AsyncIterator[aiohttp.ClientResponse]:
 | 
				
			||||||
        kwargs["headers"] = kwargs.pop("headers", {}) | self._HEADERS
 | 
					        kwargs["headers"] = kwargs.pop("headers", {}) | self._HEADERS
 | 
				
			||||||
        async with method(*args, **kwargs) as response:
 | 
					        async with method(url, *args, **kwargs) as response:
 | 
				
			||||||
            self._called_urls.append((response.status, str(response.request_info.url)))
 | 
					            self._called_urls.append((response.status, str(response.request_info.url)))
 | 
				
			||||||
            yield response
 | 
					            yield response
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,6 +6,7 @@ from typing import Optional, Dict, Type, Any, Protocol
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import aiohttp
 | 
					import aiohttp
 | 
				
			||||||
from typing_extensions import Self
 | 
					from typing_extensions import Self
 | 
				
			||||||
 | 
					from yarl import URL
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from pyhon import const, exceptions
 | 
					from pyhon import const, exceptions
 | 
				
			||||||
from pyhon.typedefs import Callback
 | 
					from pyhon.typedefs import Callback
 | 
				
			||||||
@@ -47,7 +48,7 @@ class ConnectionHandler:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @asynccontextmanager
 | 
					    @asynccontextmanager
 | 
				
			||||||
    def _intercept(
 | 
					    def _intercept(
 | 
				
			||||||
        self, method: Callback, *args: Any, loop: int = 0, **kwargs: Any
 | 
					        self, method: Callback, url: str | URL, *args: Any, **kwargs: Dict[str, Any]
 | 
				
			||||||
    ) -> AsyncIterator[aiohttp.ClientResponse]:
 | 
					    ) -> AsyncIterator[aiohttp.ClientResponse]:
 | 
				
			||||||
        raise NotImplementedError
 | 
					        raise NotImplementedError
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,6 +6,7 @@ from typing import Optional, Dict, Any
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import aiohttp
 | 
					import aiohttp
 | 
				
			||||||
from typing_extensions import Self
 | 
					from typing_extensions import Self
 | 
				
			||||||
 | 
					from yarl import URL
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from pyhon.connection.auth import HonAuth
 | 
					from pyhon.connection.auth import HonAuth
 | 
				
			||||||
from pyhon.connection.device import HonDevice
 | 
					from pyhon.connection.device import HonDevice
 | 
				
			||||||
@@ -54,16 +55,19 @@ class HonConnectionHandler(ConnectionHandler):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @asynccontextmanager
 | 
					    @asynccontextmanager
 | 
				
			||||||
    async def _intercept(
 | 
					    async def _intercept(
 | 
				
			||||||
        self, method: Callback, *args: Any, loop: int = 0, **kwargs: Dict[str, str]
 | 
					        self, method: Callback, url: str | URL, *args: Any, **kwargs: Any
 | 
				
			||||||
    ) -> AsyncIterator[aiohttp.ClientResponse]:
 | 
					    ) -> AsyncIterator[aiohttp.ClientResponse]:
 | 
				
			||||||
 | 
					        loop: int = kwargs.get("loop", 0)
 | 
				
			||||||
        kwargs["headers"] = await self._check_headers(kwargs.get("headers", {}))
 | 
					        kwargs["headers"] = await self._check_headers(kwargs.get("headers", {}))
 | 
				
			||||||
        async with method(args[0], *args[1:], **kwargs) as response:
 | 
					        async with method(url, *args, **kwargs) as response:
 | 
				
			||||||
            if (
 | 
					            if (
 | 
				
			||||||
                self.auth.token_expires_soon or response.status in [401, 403]
 | 
					                self.auth.token_expires_soon or response.status in [401, 403]
 | 
				
			||||||
            ) and loop == 0:
 | 
					            ) and loop == 0:
 | 
				
			||||||
                _LOGGER.info("Try refreshing token...")
 | 
					                _LOGGER.info("Try refreshing token...")
 | 
				
			||||||
                await self.auth.refresh()
 | 
					                await self.auth.refresh()
 | 
				
			||||||
                async with self._intercept(method, loop=loop + 1, **kwargs) as result:
 | 
					                async with self._intercept(
 | 
				
			||||||
 | 
					                    method, url, *args, loop=loop + 1, **kwargs
 | 
				
			||||||
 | 
					                ) as result:
 | 
				
			||||||
                    yield result
 | 
					                    yield result
 | 
				
			||||||
            elif (
 | 
					            elif (
 | 
				
			||||||
                self.auth.token_is_expired or response.status in [401, 403]
 | 
					                self.auth.token_is_expired or response.status in [401, 403]
 | 
				
			||||||
@@ -75,7 +79,9 @@ class HonConnectionHandler(ConnectionHandler):
 | 
				
			|||||||
                    await response.text(),
 | 
					                    await response.text(),
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
                await self.create()
 | 
					                await self.create()
 | 
				
			||||||
                async with self._intercept(method, loop=loop + 1, **kwargs) as result:
 | 
					                async with self._intercept(
 | 
				
			||||||
 | 
					                    method, url, *args, loop=loop + 1, **kwargs
 | 
				
			||||||
 | 
					                ) as result:
 | 
				
			||||||
                    yield result
 | 
					                    yield result
 | 
				
			||||||
            elif loop >= 2:
 | 
					            elif loop >= 2:
 | 
				
			||||||
                _LOGGER.error(
 | 
					                _LOGGER.error(
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								setup.py
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								setup.py
									
									
									
									
									
								
							@@ -7,7 +7,7 @@ with open("README.md", "r") as f:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
setup(
 | 
					setup(
 | 
				
			||||||
    name="pyhOn",
 | 
					    name="pyhOn",
 | 
				
			||||||
    version="0.14.3",
 | 
					    version="0.14.4",
 | 
				
			||||||
    author="Andre Basche",
 | 
					    author="Andre Basche",
 | 
				
			||||||
    description="Control hOn devices with python",
 | 
					    description="Control hOn devices with python",
 | 
				
			||||||
    long_description=long_description,
 | 
					    long_description=long_description,
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user