http_client Expand API with the "old" http_query function
[sip-router] / modules / http_client / curl_api.h
1 /*
2  * Copyright (C) 2015 Hugh Waite
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 terms 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 /*!
23  * \file
24  * \brief Kamailio http_client :: Core API include file
25  * \ingroup http_client
26  * Module: \ref http_client
27  */
28 #ifndef _CURL_API_H_
29 #define _CURL_API_H_
30
31 #include "../../sr_module.h"
32 #include "functions.h"
33
34 typedef int (*httpcapi_httpconnect_f)(struct sip_msg *msg, const str *connection, const str* _url, str* _result, const char *contenttype, const str* _post);
35 typedef int (*httpcapi_httpquery_f)(struct sip_msg* _m, char* _url, str* _dst, char* _post);
36
37
38 typedef struct httpc_api {
39         httpcapi_httpconnect_f  http_connect;
40         httpcapi_httpquery_f    http_query;
41 } httpc_api_t;
42
43 typedef int (*bind_httpc_api_f)(httpc_api_t *api);
44 int bind_httpc_api(httpc_api_t *api);
45
46 /**
47  * @brief Load the CURL API
48  */
49 static inline int httpc_load_api(httpc_api_t *api)
50 {
51         bind_httpc_api_f bindhttpc;
52
53         bindhttpc = (bind_httpc_api_f)find_export("bind_http_client", 0, 0);
54         if(bindhttpc == 0) {
55                 LM_ERR("cannot find bind_http_client\n");
56                 return -1;
57         }
58         if (bindhttpc(api) < 0)
59         {
60                 LM_ERR("cannot bind http_client api\n");
61                 return -1;
62         }
63         return 0;
64 }
65
66 #endif