annotate weechat/perl/pushover.pl @ 278:9cc79143db21

Update pushover script.
author Ludovic Chabant <ludovic@chabant.com>
date Tue, 27 Jan 2015 15:26:44 -0800
parents 726728f13152
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
259
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
1 #
278
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
2 # Copyright (C) 2013-2015 stfn <stfnmd@gmail.com>
259
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
3 # https://github.com/stfnm/weechat-scripts
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
4 #
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
5 # This program is free software: you can redistribute it and/or modify
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
6 # it under the terms of the GNU General Public License as published by
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
7 # the Free Software Foundation, either version 3 of the License, or
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
8 # (at your option) any later version.
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
9 #
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
10 # This program is distributed in the hope that it will be useful,
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
13 # GNU General Public License for more details.
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
14 #
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
15 # You should have received a copy of the GNU General Public License
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
16 # along with this program. If not, see <http://www.gnu.org/licenses/>.
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
17 #
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
18
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
19 use strict;
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
20 use warnings;
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
21
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
22 my %SCRIPT = (
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
23 name => 'pushover',
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
24 author => 'stfn <stfnmd@gmail.com>',
278
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
25 version => '1.3',
259
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
26 license => 'GPL3',
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
27 desc => 'Send push notifications to your mobile devices using Pushover, NMA or Pushbullet',
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
28 opt => 'plugins.var.perl',
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
29 );
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
30 my %OPTIONS_DEFAULT = (
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
31 'enabled' => ['on', "Turn script on or off"],
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
32 'service' => ['pushover', 'Notification service to use. Multiple services may be supplied as comma separated list. (supported services: pushover, nma, pushbullet)'],
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
33 'token' => ['ajEX9RWhxs6NgeXFJxSK2jmpY54C9S', 'pushover API token/key (You may feel free to use your own token, so you get your own monthly quota of messages without being affected by other users. See also: https://pushover.net/faq#overview-distribution )'],
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
34 'user' => ['', "pushover user key"],
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
35 'nma_apikey' => ['', "nma API key"],
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
36 'pb_apikey' => ['', "Pushbullet API key"],
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
37 'pb_device_iden' => ['', "Device Iden of pushbullet device"],
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
38 'sound' => ['', "Sound (empty for default)"],
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
39 'priority' => ['', "priority (empty for default)"],
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
40 'show_highlights' => ['on', 'Notify on highlights'],
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
41 'show_priv_msg' => ['on', 'Notify on private messages'],
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
42 'redact_priv_msg' => ['off', 'When receiving private message notifications, hide the actual message text'],
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
43 'only_if_away' => ['off', 'Notify only if away status is active'],
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
44 'only_if_inactive' => ['off', 'Notify only if buffer is not the active (current) buffer'],
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
45 'blacklist' => ['', 'Comma separated list of buffers (full name) to blacklist for notifications (wildcard "*" is allowed, name beginning with "!" is excluded)'],
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
46 'verbose' => ['1', 'Verbosity level (0 = silently ignore any errors, 1 = display brief error, 2 = display full server response)'],
278
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
47 'rate_limit' => ['0', 'Rate limit in seconds (0 = unlimited), will send a maximum of 1 notification per time limit'],
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
48 'short_name' => ['off', 'Use short buffer name in notification'],
259
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
49 );
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
50 my %OPTIONS = ();
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
51 my $TIMEOUT = 30 * 1000;
278
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
52 my $WEECHAT_VERSION;
259
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
53
278
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
54 # Enable for debugging
259
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
55 my $DEBUG = 0;
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
56
278
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
57 # Rate limit flag
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
58 my $RATE_LIMIT_OK = 1;
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
59
259
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
60 # Register script and initialize config
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
61 weechat::register($SCRIPT{"name"}, $SCRIPT{"author"}, $SCRIPT{"version"}, $SCRIPT{"license"}, $SCRIPT{"desc"}, "", "");
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
62 init_config();
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
63
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
64 # Setup hooks
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
65 weechat::hook_print("", "notify_message,notify_private,notify_highlight", "", 1, "print_cb", "");
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
66 weechat::hook_command($SCRIPT{"name"}, "send custom push notification",
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
67 "<text>",
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
68 "text: notification text to send",
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
69 "", "pushover_cb", "");
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
70
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
71 #
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
72 # Handle config stuff
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
73 #
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
74 sub init_config
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
75 {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
76 weechat::hook_config("$SCRIPT{'opt'}.$SCRIPT{'name'}.*", "config_cb", "");
278
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
77 $WEECHAT_VERSION = weechat::info_get("version_number", "") || 0;
259
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
78 foreach my $option (keys %OPTIONS_DEFAULT) {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
79 if (!weechat::config_is_set_plugin($option)) {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
80 weechat::config_set_plugin($option, $OPTIONS_DEFAULT{$option}[0]);
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
81 $OPTIONS{$option} = $OPTIONS_DEFAULT{$option}[0];
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
82 } else {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
83 $OPTIONS{$option} = weechat::config_get_plugin($option);
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
84 }
278
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
85 if ($WEECHAT_VERSION >= 0x00030500) {
259
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
86 weechat::config_set_desc_plugin($option, $OPTIONS_DEFAULT{$option}[1]." (default: \"".$OPTIONS_DEFAULT{$option}[0]."\")");
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
87 }
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
88 }
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
89 }
278
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
90
259
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
91 sub config_cb
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
92 {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
93 my ($pointer, $name, $value) = @_;
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
94 $name = substr($name, length("$SCRIPT{opt}.$SCRIPT{name}."), length($name));
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
95 $OPTIONS{$name} = $value;
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
96 return weechat::WEECHAT_RC_OK;
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
97 }
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
98
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
99 #
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
100 # Case insensitive search for element in comma separated list
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
101 #
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
102 sub grep_list($$)
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
103 {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
104 my ($str, $list) = @_;
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
105 my @array = split(/,/, $list);
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
106 return grep(/^\Q$str\E$/i, @array) ? 1 : 0;
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
107 }
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
108
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
109 #
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
110 # URL escape (percent encoding)
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
111 #
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
112 sub url_escape($)
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
113 {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
114 my $toencode = $_[0];
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
115 return undef unless (defined($toencode));
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
116 utf8::encode($toencode) if (utf8::is_utf8($toencode));
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
117 $toencode =~ s/([^a-zA-Z0-9_.~-])/uc sprintf("%%%02x",ord($1))/eg;
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
118 return $toencode;
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
119 }
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
120
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
121 #
278
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
122 # Evaluate expression (used for /secure support)
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
123 #
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
124 sub eval_expr($)
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
125 {
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
126 my $value = $_[0];
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
127 if ($WEECHAT_VERSION >= 0x00040200) {
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
128 my $eval_expression = weechat::string_eval_expression($value, {}, {}, {});
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
129 return $eval_expression if ($eval_expression ne "");
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
130 }
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
131 return $value;
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
132 }
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
133
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
134 #
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
135 # Flip rate_limit flag back to OK
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
136 #
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
137 sub rate_limit_cb
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
138 {
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
139 $RATE_LIMIT_OK = 1;
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
140 if ($DEBUG) {
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
141 weechat::print("", "[$SCRIPT{name}] Rate Limit Deactivated");
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
142 }
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
143 }
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
144
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
145 #
259
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
146 # Catch printed messages
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
147 #
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
148 sub print_cb
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
149 {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
150 my ($data, $buffer, $date, $tags, $displayed, $highlight, $prefix, $message) = @_;
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
151
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
152 my $buffer_type = weechat::buffer_get_string($buffer, "localvar_type");
278
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
153 my $buffer_full_name = "";
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
154 # check for long or short name
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
155 if ($OPTIONS{short_name} eq 'on') {
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
156 $buffer_full_name = weechat::buffer_get_string($buffer, "short_name");
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
157 } else {
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
158 $buffer_full_name = weechat::buffer_get_string($buffer, "full_name");
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
159 }
259
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
160 my $away_msg = weechat::buffer_get_string($buffer, "localvar_away");
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
161 my $away = ($away_msg && length($away_msg) > 0) ? 1 : 0;
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
162
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
163 if ($OPTIONS{enabled} ne "on" ||
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
164 $displayed == 0 ||
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
165 ($OPTIONS{only_if_away} eq "on" && $away == 0) ||
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
166 ($OPTIONS{only_if_inactive} eq "on" && $buffer eq weechat::current_buffer()) ||
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
167 weechat::buffer_match_list($buffer, $OPTIONS{blacklist})) {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
168 return weechat::WEECHAT_RC_OK;
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
169 }
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
170
278
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
171 if ($RATE_LIMIT_OK == 0) {
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
172 if ($DEBUG) {
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
173 weechat::print("", "[$SCRIPT{name}] No Notification - Rate Limited.");
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
174 }
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
175 return weechat::WEECHAT_RC_OK;
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
176 }
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
177
259
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
178 my $msg = "[$buffer_full_name] <$prefix> ";
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
179
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
180 if ($buffer_type eq "private" && $OPTIONS{redact_priv_msg} eq "on") {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
181 $msg .= "...";
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
182 } else {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
183 $msg .= "$message";
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
184 }
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
185
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
186 # Notify!
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
187 if ($OPTIONS{show_highlights} eq "on" && $highlight == 1) {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
188 # Message with highlight
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
189 notify($msg);
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
190 } elsif ($OPTIONS{show_priv_msg} eq "on" && $buffer_type eq "private") {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
191 # Private message
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
192 notify($msg);
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
193 }
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
194
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
195 return weechat::WEECHAT_RC_OK;
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
196 }
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
197
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
198 #
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
199 # /pushover
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
200 #
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
201 sub pushover_cb
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
202 {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
203 my ($data, $buffer, $args) = @_;
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
204
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
205 if (length($args) > 0) {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
206 notify($args);
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
207 }
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
208
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
209 return weechat::WEECHAT_RC_OK;
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
210 }
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
211
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
212 #
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
213 # Catch API responses
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
214 #
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
215 sub url_cb
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
216 {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
217 my ($data, $command, $return_code, $out, $err) = @_;
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
218 my $msg = "[$SCRIPT{name}] Error: ";
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
219
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
220 # Check verbosity level
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
221 if ($OPTIONS{verbose} == 0) {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
222 return weechat::WEECHAT_RC_OK; # Don't display anything
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
223 } elsif ($OPTIONS{verbose} == 1) {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
224 $msg .= "API call failed. (Most likely the service is having trouble.)";
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
225
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
226 } elsif ($OPTIONS{verbose} == 2) {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
227 $msg .= "@_";
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
228 }
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
229
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
230 # Check server response and display error message if NOT successful
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
231 if ($command =~ /pushover/ && $return_code == 0 && !($out =~ /\"status\":1/)) {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
232 weechat::print("", $msg);
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
233 } elsif ($command =~ /notifymyandroid/ && $return_code == 0 && !($out =~ /success code=\"200\"/)) {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
234 weechat::print("", $msg);
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
235 } elsif ($command =~ /pushbullet/ && $return_code == 0 && !($out =~ /\"iden\"/)) {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
236 weechat::print("", $msg);
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
237 }
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
238
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
239 return weechat::WEECHAT_RC_OK;
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
240 }
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
241
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
242 #
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
243 # Notify wrapper (decides which service to use)
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
244 #
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
245 sub notify($)
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
246 {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
247 my $message = $_[0];
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
248
278
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
249 # Start timer
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
250 if ($OPTIONS{rate_limit}) {
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
251 my $timer = $OPTIONS{rate_limit} * 1000;
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
252
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
253 if ($DEBUG) {
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
254 weechat::print("", "[$SCRIPT{name}] Rate Limit Activated. Timer: $timer");
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
255 }
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
256
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
257 $RATE_LIMIT_OK = 0;
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
258 weechat::hook_timer($timer, 0, 1, "rate_limit_cb", "");
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
259 }
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
260
259
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
261 # Notify services
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
262 if (grep_list("pushover", $OPTIONS{service})) {
278
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
263 notify_pushover(eval_expr($OPTIONS{token}), eval_expr($OPTIONS{user}), $message, "weechat", $OPTIONS{priority}, $OPTIONS{sound});
259
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
264 }
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
265 if (grep_list("nma", $OPTIONS{service})) {
278
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
266 notify_nma(eval_expr($OPTIONS{nma_apikey}), "weechat", "$SCRIPT{name}.pl", $message, $OPTIONS{priority});
259
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
267 }
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
268 if (grep_list("pushbullet", $OPTIONS{service})) {
278
9cc79143db21 Update pushover script.
Ludovic Chabant <ludovic@chabant.com>
parents: 259
diff changeset
269 notify_pushbullet(eval_expr($OPTIONS{pb_apikey}), eval_expr($OPTIONS{pb_device_iden}), "weechat", $message);
259
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
270 }
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
271 }
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
272
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
273 #
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
274 # https://pushover.net/api
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
275 #
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
276 sub notify_pushover($$$$$$)
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
277 {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
278 my ($token, $user, $message, $title, $priority, $sound) = @_;
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
279
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
280 # Required API arguments
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
281 my @post = (
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
282 "token=" . url_escape($token),
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
283 "user=" . url_escape($user),
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
284 "message=" . url_escape($message),
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
285 );
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
286
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
287 # Optional API arguments
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
288 push(@post, "title=" . url_escape($title)) if ($title && length($title) > 0);
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
289 push(@post, "priority=" . url_escape($priority)) if ($priority && length($priority) > 0);
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
290 push(@post, "sound=" . url_escape($sound)) if ($sound && length($sound) > 0);
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
291
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
292 # Send HTTP POST
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
293 my $hash = { "post" => 1, "postfields" => join(";", @post) };
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
294 if ($DEBUG) {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
295 weechat::print("", "[$SCRIPT{name}] Debug: msg -> `$message' HTTP POST -> @post");
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
296 } else {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
297 weechat::hook_process_hashtable("url:https://api.pushover.net/1/messages.json", $hash, $TIMEOUT, "url_cb", "");
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
298 }
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
299
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
300 return weechat::WEECHAT_RC_OK;
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
301 }
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
302
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
303 #
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
304 # https://www.notifymyandroid.com/api.jsp
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
305 #
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
306 sub notify_nma($$$$$)
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
307 {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
308 my ($apikey, $application, $event, $description, $priority) = @_;
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
309
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
310 # Required API arguments
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
311 my @post = (
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
312 "apikey=" . url_escape($apikey),
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
313 "application=" . url_escape($application),
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
314 "event=" . url_escape($event),
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
315 "description=" . url_escape($description),
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
316 );
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
317
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
318 # Optional API arguments
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
319 push(@post, "priority=" . url_escape($priority)) if ($priority && length($priority) > 0);
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
320
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
321 # Send HTTP POST
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
322 my $hash = { "post" => 1, "postfields" => join("&", @post) };
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
323 if ($DEBUG) {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
324 weechat::print("", "[$SCRIPT{name}] Debug: msg -> `$description' HTTP POST -> @post");
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
325 } else {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
326 weechat::hook_process_hashtable("url:https://www.notifymyandroid.com/publicapi/notify", $hash, $TIMEOUT, "url_cb", "");
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
327 }
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
328
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
329 return weechat::WEECHAT_RC_OK;
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
330 }
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
331
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
332 #
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
333 # https://docs.pushbullet.com/v2/pushes/
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
334 #
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
335 sub notify_pushbullet($$$$)
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
336 {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
337 my ($apikey, $device_iden, $title, $body) = @_;
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
338
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
339 # Required API arguments
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
340 my $apiurl = "https://$apikey\@api.pushbullet.com/v2/pushes";
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
341 my @post = (
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
342 "type=note",
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
343 );
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
344
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
345 # Optional API arguments
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
346 push(@post, "device_iden=" . url_escape($device_iden)) if ($device_iden && length($device_iden) > 0);
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
347 push(@post, "title=" . url_escape($title)) if ($title && length($title) > 0);
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
348 push(@post, "body=" . url_escape($body)) if ($body && length($body) > 0);
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
349
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
350 # Send HTTP POST
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
351 my $hash = { "post" => 1, "postfields" => join("&", @post) };
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
352 if ($DEBUG) {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
353 weechat::print("", "$apiurl [$SCRIPT{name}] Debug: msg -> `$body' HTTP POST -> @post");
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
354 } else {
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
355 weechat::hook_process_hashtable("url:$apiurl", $hash, $TIMEOUT, "url_cb", "");
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
356 }
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
357
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
358 return weechat::WEECHAT_RC_OK;
726728f13152 More Weechat plugins and config.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
359 }