Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions homeassistant/components/dwd_weather_warnings/sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -182,12 +182,16 @@ class DwdWeatherWarningsAPI:

def __init__(self, region_name):
"""Initialize the data object."""
resource = "https://www.dwd.de/DWD/warnungen/warnapp_landkreise/json/warnings.json?jsonp=loadWarnings"
resource = (
"https://www.dwd.de/DWD/warnungen/warnapp_landkreise/json/warnings.json"
)

# a User-Agent is necessary for this rest api endpoint (#29496)
headers = {"User-Agent": HA_USER_AGENT}

self._rest = RestData("GET", resource, None, headers, None, True)
params = {"jsonp": "loadWarnings"}

self._rest = RestData("GET", resource, None, headers, params, None, True)
self.region_name = region_name
self.region_id = None
self.region_state = None
Expand Down
2 changes: 1 addition & 1 deletion homeassistant/components/pvoutput/sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
verify_ssl = DEFAULT_VERIFY_SSL
headers = {"X-Pvoutput-Apikey": api_key, "X-Pvoutput-SystemId": system_id}

rest = RestData(method, _ENDPOINT, auth, headers, payload, verify_ssl)
rest = RestData(method, _ENDPOINT, auth, headers, None, payload, verify_ssl)
rest.update()

if rest.data is None:
Expand Down
7 changes: 6 additions & 1 deletion homeassistant/components/rest/binary_sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
CONF_HEADERS,
CONF_METHOD,
CONF_NAME,
CONF_PARAMS,
CONF_PASSWORD,
CONF_PAYLOAD,
CONF_RESOURCE,
Expand Down Expand Up @@ -48,6 +49,7 @@
[HTTP_BASIC_AUTHENTICATION, HTTP_DIGEST_AUTHENTICATION]
),
vol.Optional(CONF_HEADERS): {cv.string: cv.string},
vol.Optional(CONF_PARAMS): {cv.string: cv.string},
vol.Optional(CONF_METHOD, default=DEFAULT_METHOD): vol.In(["POST", "GET"]),
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
vol.Optional(CONF_PASSWORD): cv.string,
Expand Down Expand Up @@ -78,6 +80,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
username = config.get(CONF_USERNAME)
password = config.get(CONF_PASSWORD)
headers = config.get(CONF_HEADERS)
params = config.get(CONF_PARAMS)
device_class = config.get(CONF_DEVICE_CLASS)
value_template = config.get(CONF_VALUE_TEMPLATE)
force_update = config.get(CONF_FORCE_UPDATE)
Expand All @@ -97,7 +100,9 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
else:
auth = None

rest = RestData(method, resource, auth, headers, payload, verify_ssl, timeout)
rest = RestData(
method, resource, auth, headers, params, payload, verify_ssl, timeout
)
rest.update()
if rest.data is None:
raise PlatformNotReady
Expand Down
19 changes: 17 additions & 2 deletions homeassistant/components/rest/sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
CONF_HEADERS,
CONF_METHOD,
CONF_NAME,
CONF_PARAMS,
CONF_PASSWORD,
CONF_PAYLOAD,
CONF_RESOURCE,
Expand Down Expand Up @@ -55,6 +56,7 @@
[HTTP_BASIC_AUTHENTICATION, HTTP_DIGEST_AUTHENTICATION]
),
vol.Optional(CONF_HEADERS): vol.Schema({cv.string: cv.string}),
vol.Optional(CONF_PARAMS): vol.Schema({cv.string: cv.string}),
vol.Optional(CONF_JSON_ATTRS, default=[]): cv.ensure_list_csv,
vol.Optional(CONF_METHOD, default=DEFAULT_METHOD): vol.In(METHODS),
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
Expand Down Expand Up @@ -87,6 +89,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
username = config.get(CONF_USERNAME)
password = config.get(CONF_PASSWORD)
headers = config.get(CONF_HEADERS)
params = config.get(CONF_PARAMS)
unit = config.get(CONF_UNIT_OF_MEASUREMENT)
device_class = config.get(CONF_DEVICE_CLASS)
value_template = config.get(CONF_VALUE_TEMPLATE)
Expand All @@ -109,7 +112,9 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
auth = HTTPBasicAuth(username, password)
else:
auth = None
rest = RestData(method, resource, auth, headers, payload, verify_ssl, timeout)
rest = RestData(
method, resource, auth, headers, params, payload, verify_ssl, timeout
)
rest.update()
if rest.data is None:
raise PlatformNotReady
Expand Down Expand Up @@ -262,13 +267,22 @@ class RestData:
"""Class for handling the data retrieval."""

def __init__(
self, method, resource, auth, headers, data, verify_ssl, timeout=DEFAULT_TIMEOUT
self,
method,
resource,
auth,
headers,
params,
data,
verify_ssl,
timeout=DEFAULT_TIMEOUT,
):
"""Initialize the data object."""
self._method = method
self._resource = resource
self._auth = auth
self._headers = headers
self._params = params
self._request_data = data
self._verify_ssl = verify_ssl
self._timeout = timeout
Expand All @@ -292,6 +306,7 @@ def update(self):
self._method,
self._resource,
headers=self._headers,
params=self._params,
auth=self._auth,
data=self._request_data,
timeout=self._timeout,
Expand Down
5 changes: 4 additions & 1 deletion homeassistant/components/scrape/sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
CONF_AUTHENTICATION,
CONF_HEADERS,
CONF_NAME,
CONF_PARAMS,
CONF_PASSWORD,
CONF_RESOURCE,
CONF_UNIT_OF_MEASUREMENT,
Expand Down Expand Up @@ -43,6 +44,7 @@
[HTTP_BASIC_AUTHENTICATION, HTTP_DIGEST_AUTHENTICATION]
),
vol.Optional(CONF_HEADERS): vol.Schema({cv.string: cv.string}),
vol.Optional(CONF_PARAMS): vol.Schema({cv.string: cv.string}),
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
vol.Optional(CONF_PASSWORD): cv.string,
vol.Optional(CONF_UNIT_OF_MEASUREMENT): cv.string,
Expand All @@ -60,6 +62,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
method = "GET"
payload = None
headers = config.get(CONF_HEADERS)
params = config.get(CONF_PARAMS)
verify_ssl = config.get(CONF_VERIFY_SSL)
select = config.get(CONF_SELECT)
attr = config.get(CONF_ATTR)
Expand All @@ -78,7 +81,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
auth = HTTPBasicAuth(username, password)
else:
auth = None
rest = RestData(method, resource, auth, headers, payload, verify_ssl)
rest = RestData(method, resource, auth, headers, params, payload, verify_ssl)
rest.update()

if rest.data is None:
Expand Down
1 change: 1 addition & 0 deletions homeassistant/const.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@
CONF_OFFSET = "offset"
CONF_OPTIMISTIC = "optimistic"
CONF_PACKAGES = "packages"
CONF_PARAMS = "params"
CONF_PASSWORD = "password"
CONF_PATH = "path"
CONF_PAYLOAD = "payload"
Expand Down
9 changes: 8 additions & 1 deletion tests/components/rest/test_sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -662,7 +662,14 @@ def setUp(self):
self.verify_ssl = True
self.timeout = 10
self.rest = rest.RestData(
self.method, self.resource, None, None, None, self.verify_ssl, self.timeout
self.method,
self.resource,
None,
None,
None,
None,
self.verify_ssl,
self.timeout,
)

@requests_mock.Mocker()
Expand Down