Add string replacement to message title and content to match url

This commit is contained in:
John Reese 2013-01-09 13:27:53 -08:00
parent e41034374d
commit a65def9f38
2 changed files with 62 additions and 29 deletions

View File

@ -151,6 +151,29 @@ Commands
Configuration
-------------
### Keyword Expansion
Some configuration options allow for optional keyword expansion, which happens
while preparing to send the push notification. Expansion is performed each time
a notification is sent. Expansion is only performed on options that explicitly
The following keywords will be replaced with the appropriate value:
* `{context}`: the channel or query window context
* `{nick}`: the nick that sent the message
* `{datetime}`: [ISO 8601][] date string, in server-local time
* `{unixtime}`: unix-style integer timestamp
* `{title}`: the default title for the notification
* `{message}`: the shortened message contents
* `{username}`: the configured username string
* `{secret}`: the configured secret string
As an example, a value of "http://domain/{context}/{datetime}" would be expanded
to something similar to "http://domain/#channel/2011-03-09 14:25:09", or
"http://domain/{nick}/{unixtime}" to "http://domain/somenick/1299685136".
### Push Services
* `service = ""`
@ -279,19 +302,20 @@ Configuration
* `message_uri = ""`
URI that will be sent with the notification to Notifo. This could be a web address or a
URI that will be sent with the push notification. This could be a web address or a
local scheme to access a mobile application. Keyword expansion is performed on this
value each time a notification is sent; the following keywords will be replaced with
the appropriate value:
value.
* `{context}`: the channel or query window context
* `{nick}`: the nick that sent the message
* `{datetime}`: [ISO 8601][] date string, in server-local time
* `{unixtime}`: unix-style integer timestamp
* `message_title = "{title}"`
Title that will be provided for the push notification. Keyword expansion is performed
on this value.
* `message_content = "{message}"`
Message content that will be sent for the push notification. Keyword expansion is
performed on this value.
As an example, a value of "http://domain/{context}/{datetime}" would be expanded to
something similar to "http://domain/#channel/2011-03-09 14:25:09", or
"http://domain/{nick}/{unixtime}" to "http://domain/somenick/1299685136".
### Advanced

View File

@ -127,6 +127,8 @@ class CPushMod : public CModule
// Notification settings
defaults["message_length"] = "100";
defaults["message_uri"] = "";
defaults["message_title"] = "{title}";
defaults["message_content"] = "{message}";
defaults["debug"] = "off";
}
@ -200,13 +202,20 @@ class CPushMod : public CModule
char iso8601 [20];
strftime(iso8601, 20, "%Y-%m-%d %H:%M:%S", timeinfo);
// URI string replacements
// Message string replacements
MCString replace;
replace["{context}"] = context;
replace["{nick}"] = nick.GetNick();
replace["{datetime}"] = CString(iso8601);
replace["{unixtime}"] = CString(time(NULL));
CString uri = expand(options["message_uri"], replace);
replace["{message}"] = short_message;
replace["{title}"] = title;
replace["{username}"] = options["username"];
replace["{secret}"] = options["secret"];
CString message_uri = expand(options["message_uri"], replace);
CString message_title = expand(options["message_title"], replace);
CString message_content = expand(options["message_content"], replace);
// Set up the connection profile
CString service = options["service"];
@ -235,10 +244,10 @@ class CPushMod : public CModule
service_auth.Base64Encode();
params["to"] = options["username"];
params["msg"] = short_message;
params["msg"] = message_content;
params["label"] = app;
params["title"] = title;
params["uri"] = uri;
params["title"] = message_title;
params["uri"] = message_uri;
}
else if (service == "boxcar")
{
@ -256,8 +265,8 @@ class CPushMod : public CModule
params["email"] = options["username"];
params["notification[from_screen_name]"] = context;
params["notification[message]"] = short_message;
params["notification[source_url]"] = uri;
params["notification[message]"] = message_content;
params["notification[source_url]"] = message_uri;
}
else if (service == "nma")
{
@ -272,9 +281,9 @@ class CPushMod : public CModule
params["apikey"] = options["secret"];
params["application"] = app;
params["event"] = title;
params["description"] = short_message;
params["url"] = uri;
params["event"] = message_title;
params["description"] = message_content;
params["url"] = message_uri;
}
else if (service == "pushover")
{
@ -291,12 +300,12 @@ class CPushMod : public CModule
params["token"] = pushover_api_token;
params["user"] = options["secret"];
params["title"] = title;
params["message"] = short_message;
params["title"] = message_title;
params["message"] = message_content;
if (uri != "")
if (message_uri != "")
{
params["url"] = uri;
params["url"] = message_uri;
}
if (options["target"] != "")
@ -317,9 +326,9 @@ class CPushMod : public CModule
params["apikey"] = options["secret"];
params["application"] = app;
params["event"] = title;
params["description"] = short_message;
params["url"] = uri;
params["event"] = message_title;
params["description"] = message_content;
params["url"] = message_uri;
}
else if (service == "supertoasty")
{
@ -336,8 +345,8 @@ class CPushMod : public CModule
service_host = "api.supertoasty.com";
service_url = "/notify/"+options["secret"];
params["title"] = title;
params["text"] = short_message;
params["title"] = message_title;
params["text"] = message_content;
params["image"] = "https://github.com/jreese/znc-push/raw/supertoasty/logo.png";
params["sender"] = "ZNC Push";
}