From ad71ca005568a54b470cf1794311cfb8dbc00a11 Mon Sep 17 00:00:00 2001 From: Ondrej Pecta Date: Sun, 24 Apr 2022 21:00:20 +0200 Subject: [PATCH] [prowl] Added the message priority setting feature (#12647) Signed-off-by: Ondrej Pecta --- bundles/org.openhab.binding.prowl/README.md | 4 +++- .../binding/prowl/internal/ProwlHandler.java | 14 +++++++++++-- .../prowl/internal/action/ProwlActions.java | 21 ++++++++++++++++++- .../resources/OH-INF/i18n/prowl.properties | 2 ++ .../resources/OH-INF/i18n/prowl_fr.properties | 2 ++ .../resources/OH-INF/i18n/prowl_it.properties | 2 ++ 6 files changed, 41 insertions(+), 4 deletions(-) diff --git a/bundles/org.openhab.binding.prowl/README.md b/bundles/org.openhab.binding.prowl/README.md index 34ac1981df0..a0519d2999c 100644 --- a/bundles/org.openhab.binding.prowl/README.md +++ b/bundles/org.openhab.binding.prowl/README.md @@ -35,9 +35,11 @@ _*.rules_ Once you have created the broker thing with a valid API key, you can use the Prowl service in your rules. First you need to create an instance of the broker just before any call or on the top rules level. (replace the _mybroker_ with the right name of your instance). -Then you can call method _pushNotification_, which requires two parameters - _event_ and _description_. +Then you can call method _pushNotification_, which requires two parameters - _event_ and _description_. +There is also an optional third parameter _priority_ which represents the message priority (very low) -2,-1,0,1,2 (emergency). The default priority is 0. ``` val prowl = getActions("prowl","prowl:broker:mybroker") prowl.pushNotification("Event", "This is the description of the event") +prowl.pushNotification("Emergency Event", "This is the description of the event", 2) ``` diff --git a/bundles/org.openhab.binding.prowl/src/main/java/org/openhab/binding/prowl/internal/ProwlHandler.java b/bundles/org.openhab.binding.prowl/src/main/java/org/openhab/binding/prowl/internal/ProwlHandler.java index 6ba26fb0476..f292fa16530 100644 --- a/bundles/org.openhab.binding.prowl/src/main/java/org/openhab/binding/prowl/internal/ProwlHandler.java +++ b/bundles/org.openhab.binding.prowl/src/main/java/org/openhab/binding/prowl/internal/ProwlHandler.java @@ -49,7 +49,7 @@ public class ProwlHandler extends BaseThingHandler { private final Logger logger = LoggerFactory.getLogger(ProwlHandler.class); private ProwlConfiguration config = new ProwlConfiguration(); - final private HttpClient httpClient; + private final HttpClient httpClient; /** * Future to poll for status @@ -117,17 +117,27 @@ public class ProwlHandler extends BaseThingHandler { } public void pushNotification(@Nullable String event, @Nullable String description) { + pushNotification(event, description, 0); + } + + public void pushNotification(@Nullable String event, @Nullable String description, int priority) { if (event == null || description == null) { logger.debug("Cannot push message with null event or null description"); return; } + if (priority < -2) { + priority = -2; + } else if (priority > 2) { + priority = 2; + } + logger.debug("Pushing an event: {} with desc: {}", event, description); try { ContentResponse response = httpClient.POST(PROWL_ADD_URI).timeout(5, TimeUnit.SECONDS) .content( new StringContentProvider("apikey=" + config.apiKey + "&application=" + config.application - + "&event=" + event + "&description=" + description), + + "&event=" + event + "&description=" + description + "&priority=" + priority), "application/x-www-form-urlencoded; charset=UTF-8") .send(); String resp = response.getContentAsString(); diff --git a/bundles/org.openhab.binding.prowl/src/main/java/org/openhab/binding/prowl/internal/action/ProwlActions.java b/bundles/org.openhab.binding.prowl/src/main/java/org/openhab/binding/prowl/internal/action/ProwlActions.java index a535caf52e6..df7dda12ead 100644 --- a/bundles/org.openhab.binding.prowl/src/main/java/org/openhab/binding/prowl/internal/action/ProwlActions.java +++ b/bundles/org.openhab.binding.prowl/src/main/java/org/openhab/binding/prowl/internal/action/ProwlActions.java @@ -57,10 +57,29 @@ public class ProwlActions implements ThingActions { handler.pushNotification(event, message); } + @RuleAction(label = "@text/pushNotificationActionLabel", description = "@text/pushNotificationActionDescription") + public void pushNotification( + @ActionInput(name = "event", label = "@text/pushNotificationActionEventLabel", description = "@text/pushNotificationActionEventDescription") @Nullable String event, + @ActionInput(name = "message", label = "@text/pushNotificationActionMessageLabel", description = "@text/pushNotificationActionMessageDescription") @Nullable String message, + @ActionInput(name = "priority", label = "@text/pushNotificationActionPriorityLabel", description = "@text/pushNotificationActionPriorityDescription") int priority) { + ProwlHandler clientHandler = handler; + if (clientHandler == null) { + logger.warn("Prowl ThingHandler is null"); + return; + } + + handler.pushNotification(event, message, priority); + } + public static void pushNotification(@Nullable ThingActions actions, @Nullable String event, @Nullable String description) { + pushNotification(actions, event, description, 0); + } + + public static void pushNotification(@Nullable ThingActions actions, @Nullable String event, + @Nullable String description, int priority) { if (actions instanceof ProwlActions) { - ((ProwlActions) actions).pushNotification(event, description); + ((ProwlActions) actions).pushNotification(event, description, priority); } else { throw new IllegalArgumentException("Instance is not a ProwlActions class."); } diff --git a/bundles/org.openhab.binding.prowl/src/main/resources/OH-INF/i18n/prowl.properties b/bundles/org.openhab.binding.prowl/src/main/resources/OH-INF/i18n/prowl.properties index 08d7fb8c6bb..24a30415054 100644 --- a/bundles/org.openhab.binding.prowl/src/main/resources/OH-INF/i18n/prowl.properties +++ b/bundles/org.openhab.binding.prowl/src/main/resources/OH-INF/i18n/prowl.properties @@ -30,3 +30,5 @@ pushNotificationActionEventLabel = Event pushNotificationActionEventDescription = Event name. pushNotificationActionMessageLabel = Message pushNotificationActionMessageDescription = Message text. +pushNotificationActionPriorityLabel = Priority +pushNotificationActionPriorityDescription = Message priority (-2,-1,0,1,2). diff --git a/bundles/org.openhab.binding.prowl/src/main/resources/OH-INF/i18n/prowl_fr.properties b/bundles/org.openhab.binding.prowl/src/main/resources/OH-INF/i18n/prowl_fr.properties index 09e5e9be7e4..4ba33c12271 100644 --- a/bundles/org.openhab.binding.prowl/src/main/resources/OH-INF/i18n/prowl_fr.properties +++ b/bundles/org.openhab.binding.prowl/src/main/resources/OH-INF/i18n/prowl_fr.properties @@ -30,3 +30,5 @@ pushNotificationActionEventLabel = Evénement pushNotificationActionEventDescription = Nom de l'événement. pushNotificationActionMessageLabel = Message pushNotificationActionMessageDescription = Texte du message. +pushNotificationActionPriorityLabel = Priorité +pushNotificationActionPriorityDescription = Priorité du message (-2,-1,0,1,2). diff --git a/bundles/org.openhab.binding.prowl/src/main/resources/OH-INF/i18n/prowl_it.properties b/bundles/org.openhab.binding.prowl/src/main/resources/OH-INF/i18n/prowl_it.properties index b6dd757da92..cdebe2b70d6 100644 --- a/bundles/org.openhab.binding.prowl/src/main/resources/OH-INF/i18n/prowl_it.properties +++ b/bundles/org.openhab.binding.prowl/src/main/resources/OH-INF/i18n/prowl_it.properties @@ -30,3 +30,5 @@ pushNotificationActionEventLabel = Evento pushNotificationActionEventDescription = Nome evento. pushNotificationActionMessageLabel = Messaggio pushNotificationActionMessageDescription = Testo del messaggio. +pushNotificationActionPriorityLabel = Priorità +pushNotificationActionPriorityDescription = Priorità del messaggio (-2,-1,0,1,2).