4aad825754d50071a490bcdd29f553ab01ec5b59
[oweals/gnunet.git] / src / include / gnunet_rest_plugin.h
1 /*
2    This file is part of GNUnet.
3    Copyright (C) 2012-2015 GNUnet e.V.
4
5    GNUnet is free software: you can redistribute it and/or modify it
6    under the terms of the GNU Affero General Public License as published
7    by the Free Software Foundation, either version 3 of the License,
8    or (at your option) any later version.
9
10    GNUnet is distributed in the hope that it will be useful, but
11    WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Affero General Public License for more details.
14   
15    You should have received a copy of the GNU Affero General Public License
16    along with this program.  If not, see <http://www.gnu.org/licenses/>.
17    */
18 /**
19  * @author Martin Schanzenbach
20  *
21  * @file
22  * GNUnet service REST plugin header
23  *
24  * @defgroup rest-plugin  REST plugin for GNUnet services
25  * @{
26  */
27 #ifndef GNUNET_REST_PLUGIN_H
28 #define GNUNET_REST_PLUGIN_H
29
30 #include "gnunet_util_lib.h"
31 #include "gnunet_rest_lib.h"
32 #include "microhttpd.h"
33
34 #ifdef __cplusplus
35 extern "C"
36 {
37 #if 0                           /* keep Emacsens' auto-indent happy */
38 }
39 #endif
40 #endif
41
42
43 /**
44  * @brief struct returned by the initialization function of the plugin
45  */
46 struct GNUNET_REST_Plugin
47 {
48
49   /**
50    *
51    * The closure of the plugin
52    *
53    */
54   void *cls;
55
56   /**
57    * Plugin name. Used as the namespace for the API.
58    * e.g. http://hostname:port/name
59    */
60   char *name;
61
62   /**
63    * Function to process a REST call
64    *
65    * @param method the HTTP method called
66    * @param url the relative url accessed
67    * @param data the REST data (can be NULL)
68    * @param data_size the length of the data
69    * @param proc the callback for result
70    * @param proc_cls closure for callback
71    */
72   void (*process_request) (struct GNUNET_REST_RequestHandle *handle,
73                            GNUNET_REST_ResultProcessor proc,
74                            void *proc_cls);
75
76 };
77
78
79 #if 0                           /* keep Emacsens' auto-indent happy */
80 {
81 #endif
82 #ifdef __cplusplus
83 }
84 #endif
85
86 #endif
87
88 /** @} */  /* end of group */