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