RECLAIM/OIDC: code cleanup
[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    *
53    * The closure of the plugin
54    *
55    */
56   void *cls;
57
58   /**
59    * Plugin name. Used as the namespace for the API.
60    * e.g. http://hostname:port/name
61    */
62   char *name;
63
64   /**
65    * Function to process a REST call
66    *
67    * @param method the HTTP method called
68    * @param url the relative url accessed
69    * @param data the REST data (can be NULL)
70    * @param data_size the length of the data
71    * @param proc the callback for result
72    * @param proc_cls closure for callback
73    */
74   void (*process_request) (struct GNUNET_REST_RequestHandle *handle,
75                            GNUNET_REST_ResultProcessor proc,
76                            void *proc_cls);
77
78 };
79
80
81 #if 0                           /* keep Emacsens' auto-indent happy */
82 {
83 #endif
84 #ifdef __cplusplus
85 }
86 #endif
87
88 #endif
89
90 /** @} */  /* end of group */