322315f1c7e0830525988bad7f4353a47c12bb56
[kamailio] / src / modules / slack / slack.h
1 /*
2  * Copyright (C) 2021 Arsen Semenov arsperger@gmail.com
3  *
4  * This file is part of Kamailio, a free SIP server.
5  *
6  * Kamailio is free software; you can redistribute it and/or modify
7  * it under the tertc of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version
10  *
11  * Kamailio is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
19  */
20
21
22 #ifndef slack_h
23 #define slack_h
24
25 #include "../../core/sr_module.h"
26 #include "../../core/dprint.h"
27 #include "../../core/parser/parse_content.h"
28 #include "../../core/pvar.h"
29 #include "../../core/kemi.h"
30
31 #include <string.h>
32 #include <curl/curl.h>
33
34 #define BODY_FMT "{\"channel\": \"%s\", \"username\": \"%s\", \"text\": \"%s\", \"icon_emoji\": \"%s\" }"
35 #define SLACK_URL_MAX_SIZE 128
36 #define SLACK_DEFAULT_CHANNEL "#webtest"
37 #define SLACK_DEFAULT_USERNAME "webhookbot"
38 #define SLACK_DEFAULT_ICON ":ghost:"
39
40 static int _slack_print_log(struct sip_msg* msg, pv_elem_p list, char *buf, int *len)
41 {
42         return pv_printf(msg, list, buf, len);
43 }
44
45 static int _curl_send(const char* uri, str *post_data );
46 static int _slack_parse_url_param(char *val);
47 static int _slack_url_param(modparam_t type, void *val);
48
49 static int slack_fixup(void** param, int param_no);
50 static int slack_send1(struct sip_msg* msg, char* frm, char* str2);
51 static int slack_fixup_helper(void** param, int param_no);
52
53 typedef struct _sl_msg
54 {
55         pv_elem_t *m;
56 } sl_msg_t;
57
58 #endif /* slack_h */