[prowl] Added the message priority setting feature (#12647)

Signed-off-by: Ondrej Pecta <opecta@gmail.com>
This commit is contained in:
Ondrej Pecta 2022-04-24 21:00:20 +02:00 committed by GitHub
parent 433ab4dcd4
commit ad71ca0055
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 41 additions and 4 deletions

View File

@ -36,8 +36,10 @@ _*.rules_
Once you have created the broker thing with a valid API key, you can use the Prowl service in your 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). 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") val prowl = getActions("prowl","prowl:broker:mybroker")
prowl.pushNotification("Event", "This is the description of the event") prowl.pushNotification("Event", "This is the description of the event")
prowl.pushNotification("Emergency Event", "This is the description of the event", 2)
``` ```

View File

@ -49,7 +49,7 @@ public class ProwlHandler extends BaseThingHandler {
private final Logger logger = LoggerFactory.getLogger(ProwlHandler.class); private final Logger logger = LoggerFactory.getLogger(ProwlHandler.class);
private ProwlConfiguration config = new ProwlConfiguration(); private ProwlConfiguration config = new ProwlConfiguration();
final private HttpClient httpClient; private final HttpClient httpClient;
/** /**
* Future to poll for status * Future to poll for status
@ -117,17 +117,27 @@ public class ProwlHandler extends BaseThingHandler {
} }
public void pushNotification(@Nullable String event, @Nullable String description) { 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) { if (event == null || description == null) {
logger.debug("Cannot push message with null event or null description"); logger.debug("Cannot push message with null event or null description");
return; return;
} }
if (priority < -2) {
priority = -2;
} else if (priority > 2) {
priority = 2;
}
logger.debug("Pushing an event: {} with desc: {}", event, description); logger.debug("Pushing an event: {} with desc: {}", event, description);
try { try {
ContentResponse response = httpClient.POST(PROWL_ADD_URI).timeout(5, TimeUnit.SECONDS) ContentResponse response = httpClient.POST(PROWL_ADD_URI).timeout(5, TimeUnit.SECONDS)
.content( .content(
new StringContentProvider("apikey=" + config.apiKey + "&application=" + config.application 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") "application/x-www-form-urlencoded; charset=UTF-8")
.send(); .send();
String resp = response.getContentAsString(); String resp = response.getContentAsString();

View File

@ -57,10 +57,29 @@ public class ProwlActions implements ThingActions {
handler.pushNotification(event, message); 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, public static void pushNotification(@Nullable ThingActions actions, @Nullable String event,
@Nullable String description) { @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) { if (actions instanceof ProwlActions) {
((ProwlActions) actions).pushNotification(event, description); ((ProwlActions) actions).pushNotification(event, description, priority);
} else { } else {
throw new IllegalArgumentException("Instance is not a ProwlActions class."); throw new IllegalArgumentException("Instance is not a ProwlActions class.");
} }

View File

@ -30,3 +30,5 @@ pushNotificationActionEventLabel = Event
pushNotificationActionEventDescription = Event name. pushNotificationActionEventDescription = Event name.
pushNotificationActionMessageLabel = Message pushNotificationActionMessageLabel = Message
pushNotificationActionMessageDescription = Message text. pushNotificationActionMessageDescription = Message text.
pushNotificationActionPriorityLabel = Priority
pushNotificationActionPriorityDescription = Message priority (-2,-1,0,1,2).

View File

@ -30,3 +30,5 @@ pushNotificationActionEventLabel = Evénement
pushNotificationActionEventDescription = Nom de l'événement. pushNotificationActionEventDescription = Nom de l'événement.
pushNotificationActionMessageLabel = Message pushNotificationActionMessageLabel = Message
pushNotificationActionMessageDescription = Texte du message. pushNotificationActionMessageDescription = Texte du message.
pushNotificationActionPriorityLabel = Priorité
pushNotificationActionPriorityDescription = Priorité du message (-2,-1,0,1,2).

View File

@ -30,3 +30,5 @@ pushNotificationActionEventLabel = Evento
pushNotificationActionEventDescription = Nome evento. pushNotificationActionEventDescription = Nome evento.
pushNotificationActionMessageLabel = Messaggio pushNotificationActionMessageLabel = Messaggio
pushNotificationActionMessageDescription = Testo del messaggio. pushNotificationActionMessageDescription = Testo del messaggio.
pushNotificationActionPriorityLabel = Priorità
pushNotificationActionPriorityDescription = Priorità del messaggio (-2,-1,0,1,2).