qtoggleserver-generic-http 1.2.0__tar.gz → 1.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {qtoggleserver_generic_http-1.2.0/qtoggleserver_generic_http.egg-info → qtoggleserver_generic_http-1.3.0}/PKG-INFO +2 -2
- {qtoggleserver_generic_http-1.2.0 → qtoggleserver_generic_http-1.3.0}/pyproject.toml +2 -3
- {qtoggleserver_generic_http-1.2.0 → qtoggleserver_generic_http-1.3.0}/qtoggleserver/generichttp/client.py +11 -8
- {qtoggleserver_generic_http-1.2.0 → qtoggleserver_generic_http-1.3.0/qtoggleserver_generic_http.egg-info}/PKG-INFO +2 -2
- {qtoggleserver_generic_http-1.2.0 → qtoggleserver_generic_http-1.3.0}/LICENSE.txt +0 -0
- {qtoggleserver_generic_http-1.2.0 → qtoggleserver_generic_http-1.3.0}/README.md +0 -0
- {qtoggleserver_generic_http-1.2.0 → qtoggleserver_generic_http-1.3.0}/qtoggleserver/generichttp/__init__.py +0 -0
- {qtoggleserver_generic_http-1.2.0 → qtoggleserver_generic_http-1.3.0}/qtoggleserver/generichttp/ports.py +4 -4
- {qtoggleserver_generic_http-1.2.0 → qtoggleserver_generic_http-1.3.0}/qtoggleserver_generic_http.egg-info/SOURCES.txt +0 -0
- {qtoggleserver_generic_http-1.2.0 → qtoggleserver_generic_http-1.3.0}/qtoggleserver_generic_http.egg-info/dependency_links.txt +0 -0
- {qtoggleserver_generic_http-1.2.0 → qtoggleserver_generic_http-1.3.0}/qtoggleserver_generic_http.egg-info/requires.txt +0 -0
- {qtoggleserver_generic_http-1.2.0 → qtoggleserver_generic_http-1.3.0}/qtoggleserver_generic_http.egg-info/top_level.txt +0 -0
- {qtoggleserver_generic_http-1.2.0 → qtoggleserver_generic_http-1.3.0}/setup.cfg +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: qtoggleserver-generic-http
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.3.0
|
|
4
4
|
Summary: qToggleServer ports backed by configurable HTTP requests
|
|
5
5
|
Author-email: Calin Crisan <ccrisan@gmail.com>
|
|
6
6
|
License: Apache 2.0
|
|
7
|
-
Requires-Python:
|
|
7
|
+
Requires-Python: >=3.11
|
|
8
8
|
Description-Content-Type: text/markdown
|
|
9
9
|
License-File: LICENSE.txt
|
|
10
10
|
Requires-Dist: aiohttp
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "qtoggleserver-generic-http"
|
|
3
|
-
version = "1.
|
|
3
|
+
version = "1.3.0"
|
|
4
4
|
description = "qToggleServer ports backed by configurable HTTP requests"
|
|
5
5
|
authors = [
|
|
6
6
|
{name = "Calin Crisan", email = "ccrisan@gmail.com"},
|
|
7
7
|
]
|
|
8
|
-
requires-python = "
|
|
8
|
+
requires-python = ">=3.11"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = {text = "Apache 2.0"}
|
|
11
11
|
dependencies = [
|
|
@@ -22,7 +22,6 @@ dev = [
|
|
|
22
22
|
|
|
23
23
|
[tool.ruff]
|
|
24
24
|
line-length = 120
|
|
25
|
-
target-version = "py310"
|
|
26
25
|
lint.extend-select = ["I", "RUF022", "ANN"]
|
|
27
26
|
lint.extend-ignore = ["ANN002", "ANN003", "ANN401"]
|
|
28
27
|
lint.isort.lines-after-imports = 2
|
|
@@ -3,11 +3,12 @@ import logging
|
|
|
3
3
|
from typing import Any
|
|
4
4
|
|
|
5
5
|
import aiohttp
|
|
6
|
-
import jinja2.nativetypes
|
|
7
6
|
|
|
7
|
+
from qtoggleserver.conf import metadata
|
|
8
8
|
from qtoggleserver.core import ports as core_ports
|
|
9
9
|
from qtoggleserver.lib import polled
|
|
10
10
|
from qtoggleserver.utils import json as json_utils
|
|
11
|
+
from qtoggleserver.utils import template as template_utils
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
DEFAULT_TIMEOUT = 10 # seconds
|
|
@@ -47,9 +48,6 @@ class GenericHTTPClient(polled.PolledPeripheral):
|
|
|
47
48
|
self.last_response_json: Any | None = None
|
|
48
49
|
self.last_response_headers: dict[str, Any] | None = None
|
|
49
50
|
|
|
50
|
-
self._j2env: jinja2.nativetypes.NativeEnvironment = jinja2.nativetypes.NativeEnvironment(enable_async=True)
|
|
51
|
-
self._j2env.globals.update(__builtins__)
|
|
52
|
-
|
|
53
51
|
super().__init__(**kwargs)
|
|
54
52
|
|
|
55
53
|
async def make_port_args(self) -> list[dict[str, Any] | type[core_ports.BasePort]]:
|
|
@@ -61,11 +59,17 @@ class GenericHTTPClient(polled.PolledPeripheral):
|
|
|
61
59
|
|
|
62
60
|
return port_args
|
|
63
61
|
|
|
62
|
+
def get_common_context(self) -> dict:
|
|
63
|
+
return {
|
|
64
|
+
"metadata": metadata.get_all(),
|
|
65
|
+
}
|
|
66
|
+
|
|
64
67
|
async def poll(self) -> None:
|
|
65
68
|
self.debug("read request %s %s", self.read_details["method"], self.read_details["url"])
|
|
66
69
|
|
|
67
70
|
async with aiohttp.ClientSession() as session:
|
|
68
|
-
|
|
71
|
+
context = self.get_common_context()
|
|
72
|
+
request_params = await self.prepare_request(self.read_details, context)
|
|
69
73
|
async with session.request(**request_params) as response:
|
|
70
74
|
data = await response.read()
|
|
71
75
|
|
|
@@ -86,7 +90,7 @@ class GenericHTTPClient(polled.PolledPeripheral):
|
|
|
86
90
|
for k, v in self.write_details.items():
|
|
87
91
|
details.setdefault(k, v)
|
|
88
92
|
|
|
89
|
-
context =
|
|
93
|
+
context = self.get_common_context() | await self.get_placeholders_context(port) | context
|
|
90
94
|
|
|
91
95
|
async with aiohttp.ClientSession() as session:
|
|
92
96
|
request_params = await self.prepare_request(details, context)
|
|
@@ -158,7 +162,6 @@ class GenericHTTPClient(polled.PolledPeripheral):
|
|
|
158
162
|
elif isinstance(obj, list):
|
|
159
163
|
return [await self.replace_placeholders_rec(e, context) for e in obj]
|
|
160
164
|
elif isinstance(obj, str):
|
|
161
|
-
|
|
162
|
-
return await template.render_async(context)
|
|
165
|
+
return await template_utils.render_native(obj, context)
|
|
163
166
|
else:
|
|
164
167
|
return obj
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: qtoggleserver-generic-http
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.3.0
|
|
4
4
|
Summary: qToggleServer ports backed by configurable HTTP requests
|
|
5
5
|
Author-email: Calin Crisan <ccrisan@gmail.com>
|
|
6
6
|
License: Apache 2.0
|
|
7
|
-
Requires-Python:
|
|
7
|
+
Requires-Python: >=3.11
|
|
8
8
|
Description-Content-Type: text/markdown
|
|
9
9
|
License-File: LICENSE.txt
|
|
10
10
|
Requires-Dist: aiohttp
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -22,10 +22,6 @@ class GenericHTTPPort(polled.PolledPort):
|
|
|
22
22
|
write: dict[str, Any] | None = None,
|
|
23
23
|
**kwargs,
|
|
24
24
|
) -> None:
|
|
25
|
-
# These will directly determine the port type attribute
|
|
26
|
-
self._type = type
|
|
27
|
-
self._writable = writable
|
|
28
|
-
|
|
29
25
|
self._write_details: dict[str, Any] = write or {}
|
|
30
26
|
|
|
31
27
|
json_path = read.get("json_path")
|
|
@@ -40,6 +36,10 @@ class GenericHTTPPort(polled.PolledPort):
|
|
|
40
36
|
|
|
41
37
|
super().__init__(id=id, **kwargs)
|
|
42
38
|
|
|
39
|
+
# These will directly determine the port type attribute
|
|
40
|
+
self._type = type
|
|
41
|
+
self._writable = writable
|
|
42
|
+
|
|
43
43
|
def get_peripheral(self) -> GenericHTTPClient:
|
|
44
44
|
return cast(GenericHTTPClient, super().get_peripheral())
|
|
45
45
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|