[netatmo] Adding the ability to append a postfix to registered webhook. (#14123)

* Adding the ability to append a postfix to registered webhook.

Signed-off-by: clinique <gael@lhopital.org>
This commit is contained in:
Gaël L'hopital 2023-01-01 10:37:18 +01:00 committed by GitHub
parent 99d956630e
commit 171711a4dd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 17 additions and 6 deletions

View File

@ -47,6 +47,7 @@ The Account bridge has the following configuration elements:
| clientId | String | Yes | Client ID provided for the application you created on <http://dev.netatmo.com/createapp> |
| clientSecret | String | Yes | Client Secret provided for the application you created |
| webHookUrl | String | No | Protocol, public IP and port to access openHAB server from Internet |
| webHookPostfix | String | No | String appended to the generated webhook address (should start with "/") |
| reconnectInterval | Number | No | The reconnection interval to Netatmo API (in s) |
| refreshToken | String | Yes* | The refresh token provided by Netatmo API after the granting process. Can be saved in case of file based configuration |
@ -100,14 +101,14 @@ Netatmo servers can send push notifications to the Netatmo Binding by using a ca
The webhook URL is setup at Netatmo Account level using "Webhook Address" parameter.
You will define here public way to access your openHAB server:
```text
```
http(s)://xx.yy.zz.ww:443
```
Your Netatmo App will be configured automatically by the bridge to the endpoint:
```text
http(s)://xx.yy.zz.ww:443/netatmo/webhook/<_CLIENT_ID_>
```
http(s)://xx.yy.zz.ww:443/netatmo/webhook/<_CLIENT_ID_><webHookPostfix>
```
Please be aware of Netatmo own limits regarding webhook usage that lead to a 24h ban-time when webhook does not answer 5 times.

View File

@ -29,6 +29,7 @@ public class ApiHandlerConfiguration {
public String clientSecret = "";
public String refreshToken = "";
public String webHookUrl = "";
public String webHookPostfix = "";
public int reconnectInterval = 300;
public ConfigurationLevel check() {

View File

@ -160,7 +160,7 @@ public class ApiBridgeHandler extends BaseBridgeHandler {
SecurityApi securityApi = getRestManager(SecurityApi.class);
if (securityApi != null) {
WebhookServlet servlet = new WebhookServlet(this, httpService, deserializer, securityApi,
configuration.webHookUrl);
configuration.webHookUrl, configuration.webHookPostfix);
servlet.startListening();
this.webHookServlet = servlet;
}

View File

@ -50,21 +50,23 @@ public class WebhookServlet extends NetatmoServlet {
private final SecurityApi securityApi;
private final NADeserializer deserializer;
private final String webHookUrl;
private final String webHookPostfix;
private boolean hookSet = false;
public WebhookServlet(ApiBridgeHandler handler, HttpService httpService, NADeserializer deserializer,
SecurityApi securityApi, String webHookUrl) {
SecurityApi securityApi, String webHookUrl, String webHookPostfix) {
super(handler, httpService, "webhook");
this.deserializer = deserializer;
this.securityApi = securityApi;
this.webHookUrl = webHookUrl;
this.webHookPostfix = webHookPostfix;
}
@Override
public void startListening() {
super.startListening();
URI uri = UriBuilder.fromUri(webHookUrl).path(path).build();
URI uri = UriBuilder.fromUri(webHookUrl).path(path + webHookPostfix).build();
try {
logger.info("Setting up WebHook at Netatmo to {}", uri.toString());
hookSet = securityApi.addwebhook(uri);

View File

@ -29,6 +29,11 @@
<description>@text/config.webHookUrl.description</description>
</parameter>
<parameter name="webHookPostfix" type="text" required="false">
<label>@text/config.webHookPostfix.label</label>
<description>@text/config.webHookPostfix.description</description>
</parameter>
<parameter name="reconnectInterval" type="integer" unit="s">
<label>@text/config.reconnectInterval.label</label>
<description>@text/config.reconnectInterval.description</description>

View File

@ -423,6 +423,8 @@ config.clientSecret.label = Client Secret
config.clientSecret.description = Client Secret provided for the application you created.
config.refreshToken.label = Refresh Token
config.refreshToken.description = Refresh token provided by the oAuth2 authentication process.
config.webHookPostfix.label = Webhook Postfix
config.webHookPostfix.description = String appended to the generated webhook address (should start with `/`).
config.webHookUrl.label = Webhook Address
config.webHookUrl.description = Protocol, public IP or hostname and port to access openHAB server from Internet.
config.reconnectInterval.label = Reconnect Interval