mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-07-20 15:46:29 +00:00
Add ingress_stream add-on option (#2982)
This commit is contained in:
parent
07eeb2eaf2
commit
7c6c982414
@ -32,6 +32,7 @@ from ..const import (
|
|||||||
ATTR_HOST_PID,
|
ATTR_HOST_PID,
|
||||||
ATTR_IMAGE,
|
ATTR_IMAGE,
|
||||||
ATTR_INGRESS,
|
ATTR_INGRESS,
|
||||||
|
ATTR_INGRESS_STREAM,
|
||||||
ATTR_INIT,
|
ATTR_INIT,
|
||||||
ATTR_JOURNALD,
|
ATTR_JOURNALD,
|
||||||
ATTR_KERNEL_MODULES,
|
ATTR_KERNEL_MODULES,
|
||||||
@ -398,6 +399,11 @@ class AddonModel(CoreSysAttributes, ABC):
|
|||||||
"""Return True if the add-on access support ingress."""
|
"""Return True if the add-on access support ingress."""
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@property
|
||||||
|
def ingress_stream(self) -> bool:
|
||||||
|
"""Return True if post requests to ingress should be streamed."""
|
||||||
|
return self.data[ATTR_INGRESS_STREAM]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def with_gpio(self) -> bool:
|
def with_gpio(self) -> bool:
|
||||||
"""Return True if the add-on access to GPIO interface."""
|
"""Return True if the add-on access to GPIO interface."""
|
||||||
|
@ -45,6 +45,7 @@ from ..const import (
|
|||||||
ATTR_INGRESS_ENTRY,
|
ATTR_INGRESS_ENTRY,
|
||||||
ATTR_INGRESS_PANEL,
|
ATTR_INGRESS_PANEL,
|
||||||
ATTR_INGRESS_PORT,
|
ATTR_INGRESS_PORT,
|
||||||
|
ATTR_INGRESS_STREAM,
|
||||||
ATTR_INGRESS_TOKEN,
|
ATTR_INGRESS_TOKEN,
|
||||||
ATTR_INIT,
|
ATTR_INIT,
|
||||||
ATTR_JOURNALD,
|
ATTR_JOURNALD,
|
||||||
@ -259,6 +260,7 @@ _SCHEMA_ADDON_CONFIG = vol.Schema(
|
|||||||
network_port, vol.Equal(0)
|
network_port, vol.Equal(0)
|
||||||
),
|
),
|
||||||
vol.Optional(ATTR_INGRESS_ENTRY): str,
|
vol.Optional(ATTR_INGRESS_ENTRY): str,
|
||||||
|
vol.Optional(ATTR_INGRESS_STREAM, default=False): vol.Boolean(),
|
||||||
vol.Optional(ATTR_PANEL_ICON, default="mdi:puzzle"): str,
|
vol.Optional(ATTR_PANEL_ICON, default="mdi:puzzle"): str,
|
||||||
vol.Optional(ATTR_PANEL_TITLE): str,
|
vol.Optional(ATTR_PANEL_TITLE): str,
|
||||||
vol.Optional(ATTR_PANEL_ADMIN, default=True): vol.Boolean(),
|
vol.Optional(ATTR_PANEL_ADMIN, default=True): vol.Boolean(),
|
||||||
|
@ -167,7 +167,12 @@ class APIIngress(CoreSysAttributes):
|
|||||||
# Passing the raw stream breaks requests for some webservers
|
# Passing the raw stream breaks requests for some webservers
|
||||||
# since we just need it for POST requests really, for all other methods
|
# since we just need it for POST requests really, for all other methods
|
||||||
# we read the bytes and pass that to the request to the add-on
|
# we read the bytes and pass that to the request to the add-on
|
||||||
data = request.content if request.method == "POST" else await request.read()
|
# add-ons needs to add support with that in the configuration
|
||||||
|
data = (
|
||||||
|
request.content
|
||||||
|
if request.method == "POST" and addon.ingress_stream
|
||||||
|
else await request.read()
|
||||||
|
)
|
||||||
|
|
||||||
async with self.sys_websession.request(
|
async with self.sys_websession.request(
|
||||||
request.method,
|
request.method,
|
||||||
|
@ -192,6 +192,7 @@ ATTR_INGRESS_PANEL = "ingress_panel"
|
|||||||
ATTR_INGRESS_PORT = "ingress_port"
|
ATTR_INGRESS_PORT = "ingress_port"
|
||||||
ATTR_INGRESS_TOKEN = "ingress_token"
|
ATTR_INGRESS_TOKEN = "ingress_token"
|
||||||
ATTR_INGRESS_URL = "ingress_url"
|
ATTR_INGRESS_URL = "ingress_url"
|
||||||
|
ATTR_INGRESS_STREAM = "ingress_stream"
|
||||||
ATTR_INIT = "init"
|
ATTR_INIT = "init"
|
||||||
ATTR_INITIALIZE = "initialize"
|
ATTR_INITIALIZE = "initialize"
|
||||||
ATTR_INPUT = "input"
|
ATTR_INPUT = "input"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user