-more rest handling
[oweals/gnunet.git] / src / include / gnunet_rest_plugin.h
1 /*
2    This file is part of GNUnet.
3    Copyright (C) 2012-2015 Christian Grothoff (and other contributing authors)
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., 59 Temple Place - Suite 330,
18    Boston, MA 02111-1307, USA.
19    */
20 /**
21  * @author Martin Schanzenbach
22  * @file include/gnunet_rest_plugin.h
23  * @brief GNUnet service REST plugin header
24  *
25  */
26 #ifndef GNUNET_REST_PLUGIN_H
27 #define GNUNET_REST_PLUGIN_H
28
29 #include "gnunet_util_lib.h"
30 #include "gnunet_rest_lib.h"
31 #include "microhttpd.h"
32
33 #ifdef __cplusplus
34 extern "C"
35 {
36 #if 0                           /* keep Emacsens' auto-indent happy */
37 }
38 #endif
39 #endif
40
41
42 /**
43  * @brief struct returned by the initialization function of the plugin
44  */
45 struct GNUNET_REST_Plugin
46 {
47
48   /**
49    *
50    * The closure of the plugin
51    *
52    */
53   void *cls;
54
55   /**
56    * Plugin name. Used as the namespace for the API.
57    * e.g. http://hostname:port/<name>
58    */
59   char *name;
60
61   /**
62    * Function to process a REST call
63    * 
64    * @param method the HTTP method called
65    * @param url the relative url accessed
66    * @param data the REST data (can be NULL)
67    * @param data_size the length of the data
68    * @param proc the callback for result
69    * @param proc_cls closure for callback
70    */
71   void (*process_request) (struct RestConnectionDataHandle *handle,
72                            GNUNET_REST_ResultProcessor proc,
73                            void *proc_cls);
74
75 };
76
77
78 #if 0                           /* keep Emacsens' auto-indent happy */
79 {
80 #endif
81 #ifdef __cplusplus
82 }
83 #endif
84
85 /* end of gnunet_rest_plugin.h */
86 #endif
87