slack: reuse http_client api
[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 "../../modules/http_client/curl_api.h"
26
27 #include "../../core/sr_module.h"
28 #include "../../core/dprint.h"
29 #include "../../core/parser/parse_content.h"
30 #include "../../core/pvar.h"
31 #include "../../core/kemi.h"
32
33 #include <string.h>
34
35 #define BODY_FMT "{\"channel\": \"%s\", \"username\": \"%s\", \"text\": \"%s\", \"icon_emoji\": \"%s\" }"
36 #define SLACK_URL_MAX_SIZE 128
37 #define SLACK_DEFAULT_CHANNEL "#webtest"
38 #define SLACK_DEFAULT_USERNAME "webhookbot"
39 #define SLACK_DEFAULT_ICON ":ghost:"
40
41 static int _slack_print_log(struct sip_msg* msg, pv_elem_p list, char *buf, int *len)
42 {
43         return pv_printf(msg, list, buf, len);
44 }
45
46 /* http_client api */
47 httpc_api_t httpapi;
48
49 static void slack_free_str(str *str);
50 static int slack_curl_send(struct sip_msg* msg, char* uri, str *post_data );
51 static int _slack_parse_url_param(char *val);
52 static int _slack_url_param(modparam_t type, void *val);
53
54 static int slack_fixup(void** param, int param_no);
55 static int slack_send1(struct sip_msg* msg, char* frm, char* str2);
56 static int slack_fixup_helper(void** param, int param_no);
57
58 typedef struct _sl_msg
59 {
60         pv_elem_t *m;
61 } sl_msg_t;
62
63 #endif /* slack_h */