- rework rest/jsonapi API; bugfixes
[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
6    it under the terms of the GNU General Public License as published
7    by the Free Software Foundation; either version 3, or (at your
8    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    General Public License for more details.
14
15    You should have received a copy of the GNU General Public License
16    along with GNUnet; see the file COPYING.  If not, write to the
17    Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18    Boston, MA 02110-1301, USA.
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 */