consolidate reclaim attribute lib
[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      SPDX-License-Identifier: AGPL3.0-or-later
19  */
20 /**
21  * @author Martin Schanzenbach
22  *
23  * @file
24  * GNUnet service REST plugin header
25  *
26  * @defgroup rest-plugin  REST plugin for GNUnet services
27  * @{
28  */
29 #ifndef GNUNET_REST_PLUGIN_H
30 #define GNUNET_REST_PLUGIN_H
31
32 #include "gnunet_util_lib.h"
33 #include "gnunet_rest_lib.h"
34 #include "microhttpd.h"
35
36 #ifdef __cplusplus
37 extern "C"
38 {
39 #if 0                           /* keep Emacsens' auto-indent happy */
40 }
41 #endif
42 #endif
43
44
45 /**
46  * @brief struct returned by the initialization function of the plugin
47  */
48 struct GNUNET_REST_Plugin
49 {
50   /**
51    *
52    * The closure of the plugin
53    *
54    */
55   void *cls;
56
57   /**
58    * Plugin name. Used as the namespace for the API.
59    * e.g. http://hostname:port/name
60    */
61   char *name;
62
63   /**
64    * Function to process a REST call
65    *
66    * @param method the HTTP method called
67    * @param url the relative url accessed
68    * @param data the REST data (can be NULL)
69    * @param data_size the length of the data
70    * @param proc the callback for result
71    * @param proc_cls closure for callback
72    */
73   void (*process_request) (struct GNUNET_REST_RequestHandle *handle,
74                            GNUNET_REST_ResultProcessor proc,
75                            void *proc_cls);
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 */