cd421138fc92c0494544c3237c6985db9d0217bb
[asterisk/asterisk.git] / res / res_stasis_http_recordings.c
1 /*
2  * Asterisk -- An open source telephony toolkit.
3  *
4  * Copyright (C) 2012 - 2013, Digium, Inc.
5  *
6  * David M. Lee, II <dlee@digium.com>
7  *
8  * See http://www.asterisk.org for more information about
9  * the Asterisk project. Please do not directly contact
10  * any of the maintainers of this project for assistance;
11  * the project provides a web site, mailing lists and IRC
12  * channels for your use.
13  *
14  * This program is free software, distributed under the terms of
15  * the GNU General Public License Version 2. See the LICENSE file
16  * at the top of the source tree.
17  */
18
19 /*
20  * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
21  * !!!!!                               DO NOT EDIT                        !!!!!
22  * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
23  * This file is generated by a mustache template. Please see the original
24  * template in rest-api-templates/res_stasis_http_resource.c.mustache
25  */
26
27 /*! \file
28  *
29  * \brief Recording resources
30  *
31  * \author David M. Lee, II <dlee@digium.com>
32  */
33
34 /*** MODULEINFO
35         <depend type="module">res_stasis_http</depend>
36         <depend type="module">res_stasis</depend>
37         <support_level>core</support_level>
38  ***/
39
40 #include "asterisk.h"
41
42 ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
43
44 #include "asterisk/module.h"
45 #include "asterisk/stasis_app.h"
46 #include "stasis_http/resource_recordings.h"
47
48 /*!
49  * \brief Parameter parsing callback for /recordings.
50  * \param get_params GET parameters in the HTTP request.
51  * \param path_vars Path variables extracted from the request.
52  * \param headers HTTP headers.
53  * \param[out] response Response to the HTTP request.
54  */
55 static void stasis_http_get_recordings_cb(
56     struct ast_variable *get_params, struct ast_variable *path_vars,
57     struct ast_variable *headers, struct stasis_http_response *response)
58 {
59         struct ast_get_recordings_args args = {};
60         stasis_http_get_recordings(headers, &args, response);
61 }
62 /*!
63  * \brief Parameter parsing callback for /recordings/stored.
64  * \param get_params GET parameters in the HTTP request.
65  * \param path_vars Path variables extracted from the request.
66  * \param headers HTTP headers.
67  * \param[out] response Response to the HTTP request.
68  */
69 static void stasis_http_get_stored_recordings_cb(
70     struct ast_variable *get_params, struct ast_variable *path_vars,
71     struct ast_variable *headers, struct stasis_http_response *response)
72 {
73         struct ast_get_stored_recordings_args args = {};
74         stasis_http_get_stored_recordings(headers, &args, response);
75 }
76 /*!
77  * \brief Parameter parsing callback for /recordings/stored/{recordingId}.
78  * \param get_params GET parameters in the HTTP request.
79  * \param path_vars Path variables extracted from the request.
80  * \param headers HTTP headers.
81  * \param[out] response Response to the HTTP request.
82  */
83 static void stasis_http_get_stored_recording_cb(
84     struct ast_variable *get_params, struct ast_variable *path_vars,
85     struct ast_variable *headers, struct stasis_http_response *response)
86 {
87         struct ast_get_stored_recording_args args = {};
88         struct ast_variable *i;
89
90         for (i = path_vars; i; i = i->next) {
91                 if (strcmp(i->name, "recordingId") == 0) {
92                         args.recording_id = (i->value);
93                 } else
94                 {}
95         }
96         stasis_http_get_stored_recording(headers, &args, response);
97 }
98 /*!
99  * \brief Parameter parsing callback for /recordings/stored/{recordingId}.
100  * \param get_params GET parameters in the HTTP request.
101  * \param path_vars Path variables extracted from the request.
102  * \param headers HTTP headers.
103  * \param[out] response Response to the HTTP request.
104  */
105 static void stasis_http_delete_stored_recording_cb(
106     struct ast_variable *get_params, struct ast_variable *path_vars,
107     struct ast_variable *headers, struct stasis_http_response *response)
108 {
109         struct ast_delete_stored_recording_args args = {};
110         struct ast_variable *i;
111
112         for (i = path_vars; i; i = i->next) {
113                 if (strcmp(i->name, "recordingId") == 0) {
114                         args.recording_id = (i->value);
115                 } else
116                 {}
117         }
118         stasis_http_delete_stored_recording(headers, &args, response);
119 }
120 /*!
121  * \brief Parameter parsing callback for /recordings/live.
122  * \param get_params GET parameters in the HTTP request.
123  * \param path_vars Path variables extracted from the request.
124  * \param headers HTTP headers.
125  * \param[out] response Response to the HTTP request.
126  */
127 static void stasis_http_get_live_recordings_cb(
128     struct ast_variable *get_params, struct ast_variable *path_vars,
129     struct ast_variable *headers, struct stasis_http_response *response)
130 {
131         struct ast_get_live_recordings_args args = {};
132         stasis_http_get_live_recordings(headers, &args, response);
133 }
134 /*!
135  * \brief Parameter parsing callback for /recordings/live/{recordingId}.
136  * \param get_params GET parameters in the HTTP request.
137  * \param path_vars Path variables extracted from the request.
138  * \param headers HTTP headers.
139  * \param[out] response Response to the HTTP request.
140  */
141 static void stasis_http_get_live_recording_cb(
142     struct ast_variable *get_params, struct ast_variable *path_vars,
143     struct ast_variable *headers, struct stasis_http_response *response)
144 {
145         struct ast_get_live_recording_args args = {};
146         struct ast_variable *i;
147
148         for (i = path_vars; i; i = i->next) {
149                 if (strcmp(i->name, "recordingId") == 0) {
150                         args.recording_id = (i->value);
151                 } else
152                 {}
153         }
154         stasis_http_get_live_recording(headers, &args, response);
155 }
156 /*!
157  * \brief Parameter parsing callback for /recordings/live/{recordingId}.
158  * \param get_params GET parameters in the HTTP request.
159  * \param path_vars Path variables extracted from the request.
160  * \param headers HTTP headers.
161  * \param[out] response Response to the HTTP request.
162  */
163 static void stasis_http_cancel_recording_cb(
164     struct ast_variable *get_params, struct ast_variable *path_vars,
165     struct ast_variable *headers, struct stasis_http_response *response)
166 {
167         struct ast_cancel_recording_args args = {};
168         struct ast_variable *i;
169
170         for (i = path_vars; i; i = i->next) {
171                 if (strcmp(i->name, "recordingId") == 0) {
172                         args.recording_id = (i->value);
173                 } else
174                 {}
175         }
176         stasis_http_cancel_recording(headers, &args, response);
177 }
178 /*!
179  * \brief Parameter parsing callback for /recordings/live/{recordingId}/stop.
180  * \param get_params GET parameters in the HTTP request.
181  * \param path_vars Path variables extracted from the request.
182  * \param headers HTTP headers.
183  * \param[out] response Response to the HTTP request.
184  */
185 static void stasis_http_stop_recording_cb(
186     struct ast_variable *get_params, struct ast_variable *path_vars,
187     struct ast_variable *headers, struct stasis_http_response *response)
188 {
189         struct ast_stop_recording_args args = {};
190         struct ast_variable *i;
191
192         for (i = path_vars; i; i = i->next) {
193                 if (strcmp(i->name, "recordingId") == 0) {
194                         args.recording_id = (i->value);
195                 } else
196                 {}
197         }
198         stasis_http_stop_recording(headers, &args, response);
199 }
200 /*!
201  * \brief Parameter parsing callback for /recordings/live/{recordingId}/pause.
202  * \param get_params GET parameters in the HTTP request.
203  * \param path_vars Path variables extracted from the request.
204  * \param headers HTTP headers.
205  * \param[out] response Response to the HTTP request.
206  */
207 static void stasis_http_pause_recording_cb(
208     struct ast_variable *get_params, struct ast_variable *path_vars,
209     struct ast_variable *headers, struct stasis_http_response *response)
210 {
211         struct ast_pause_recording_args args = {};
212         struct ast_variable *i;
213
214         for (i = path_vars; i; i = i->next) {
215                 if (strcmp(i->name, "recordingId") == 0) {
216                         args.recording_id = (i->value);
217                 } else
218                 {}
219         }
220         stasis_http_pause_recording(headers, &args, response);
221 }
222 /*!
223  * \brief Parameter parsing callback for /recordings/live/{recordingId}/unpause.
224  * \param get_params GET parameters in the HTTP request.
225  * \param path_vars Path variables extracted from the request.
226  * \param headers HTTP headers.
227  * \param[out] response Response to the HTTP request.
228  */
229 static void stasis_http_unpause_recording_cb(
230     struct ast_variable *get_params, struct ast_variable *path_vars,
231     struct ast_variable *headers, struct stasis_http_response *response)
232 {
233         struct ast_unpause_recording_args args = {};
234         struct ast_variable *i;
235
236         for (i = path_vars; i; i = i->next) {
237                 if (strcmp(i->name, "recordingId") == 0) {
238                         args.recording_id = (i->value);
239                 } else
240                 {}
241         }
242         stasis_http_unpause_recording(headers, &args, response);
243 }
244 /*!
245  * \brief Parameter parsing callback for /recordings/live/{recordingId}/mute.
246  * \param get_params GET parameters in the HTTP request.
247  * \param path_vars Path variables extracted from the request.
248  * \param headers HTTP headers.
249  * \param[out] response Response to the HTTP request.
250  */
251 static void stasis_http_mute_recording_cb(
252     struct ast_variable *get_params, struct ast_variable *path_vars,
253     struct ast_variable *headers, struct stasis_http_response *response)
254 {
255         struct ast_mute_recording_args args = {};
256         struct ast_variable *i;
257
258         for (i = path_vars; i; i = i->next) {
259                 if (strcmp(i->name, "recordingId") == 0) {
260                         args.recording_id = (i->value);
261                 } else
262                 {}
263         }
264         stasis_http_mute_recording(headers, &args, response);
265 }
266 /*!
267  * \brief Parameter parsing callback for /recordings/live/{recordingId}/unmute.
268  * \param get_params GET parameters in the HTTP request.
269  * \param path_vars Path variables extracted from the request.
270  * \param headers HTTP headers.
271  * \param[out] response Response to the HTTP request.
272  */
273 static void stasis_http_unmute_recording_cb(
274     struct ast_variable *get_params, struct ast_variable *path_vars,
275     struct ast_variable *headers, struct stasis_http_response *response)
276 {
277         struct ast_unmute_recording_args args = {};
278         struct ast_variable *i;
279
280         for (i = path_vars; i; i = i->next) {
281                 if (strcmp(i->name, "recordingId") == 0) {
282                         args.recording_id = (i->value);
283                 } else
284                 {}
285         }
286         stasis_http_unmute_recording(headers, &args, response);
287 }
288
289 /*! \brief REST handler for /api-docs/recordings.{format} */
290 static struct stasis_rest_handlers recordings_stored_recordingId = {
291         .path_segment = "recordingId",
292         .is_wildcard = 1,
293         .callbacks = {
294                 [AST_HTTP_GET] = stasis_http_get_stored_recording_cb,
295                 [AST_HTTP_DELETE] = stasis_http_delete_stored_recording_cb,
296         },
297         .num_children = 0,
298         .children = {  }
299 };
300 /*! \brief REST handler for /api-docs/recordings.{format} */
301 static struct stasis_rest_handlers recordings_stored = {
302         .path_segment = "stored",
303         .callbacks = {
304                 [AST_HTTP_GET] = stasis_http_get_stored_recordings_cb,
305         },
306         .num_children = 1,
307         .children = { &recordings_stored_recordingId, }
308 };
309 /*! \brief REST handler for /api-docs/recordings.{format} */
310 static struct stasis_rest_handlers recordings_live_recordingId_stop = {
311         .path_segment = "stop",
312         .callbacks = {
313                 [AST_HTTP_POST] = stasis_http_stop_recording_cb,
314         },
315         .num_children = 0,
316         .children = {  }
317 };
318 /*! \brief REST handler for /api-docs/recordings.{format} */
319 static struct stasis_rest_handlers recordings_live_recordingId_pause = {
320         .path_segment = "pause",
321         .callbacks = {
322                 [AST_HTTP_POST] = stasis_http_pause_recording_cb,
323         },
324         .num_children = 0,
325         .children = {  }
326 };
327 /*! \brief REST handler for /api-docs/recordings.{format} */
328 static struct stasis_rest_handlers recordings_live_recordingId_unpause = {
329         .path_segment = "unpause",
330         .callbacks = {
331                 [AST_HTTP_POST] = stasis_http_unpause_recording_cb,
332         },
333         .num_children = 0,
334         .children = {  }
335 };
336 /*! \brief REST handler for /api-docs/recordings.{format} */
337 static struct stasis_rest_handlers recordings_live_recordingId_mute = {
338         .path_segment = "mute",
339         .callbacks = {
340                 [AST_HTTP_POST] = stasis_http_mute_recording_cb,
341         },
342         .num_children = 0,
343         .children = {  }
344 };
345 /*! \brief REST handler for /api-docs/recordings.{format} */
346 static struct stasis_rest_handlers recordings_live_recordingId_unmute = {
347         .path_segment = "unmute",
348         .callbacks = {
349                 [AST_HTTP_POST] = stasis_http_unmute_recording_cb,
350         },
351         .num_children = 0,
352         .children = {  }
353 };
354 /*! \brief REST handler for /api-docs/recordings.{format} */
355 static struct stasis_rest_handlers recordings_live_recordingId = {
356         .path_segment = "recordingId",
357         .is_wildcard = 1,
358         .callbacks = {
359                 [AST_HTTP_GET] = stasis_http_get_live_recording_cb,
360                 [AST_HTTP_DELETE] = stasis_http_cancel_recording_cb,
361         },
362         .num_children = 5,
363         .children = { &recordings_live_recordingId_stop,&recordings_live_recordingId_pause,&recordings_live_recordingId_unpause,&recordings_live_recordingId_mute,&recordings_live_recordingId_unmute, }
364 };
365 /*! \brief REST handler for /api-docs/recordings.{format} */
366 static struct stasis_rest_handlers recordings_live = {
367         .path_segment = "live",
368         .callbacks = {
369                 [AST_HTTP_GET] = stasis_http_get_live_recordings_cb,
370         },
371         .num_children = 1,
372         .children = { &recordings_live_recordingId, }
373 };
374 /*! \brief REST handler for /api-docs/recordings.{format} */
375 static struct stasis_rest_handlers recordings = {
376         .path_segment = "recordings",
377         .callbacks = {
378                 [AST_HTTP_GET] = stasis_http_get_recordings_cb,
379         },
380         .num_children = 2,
381         .children = { &recordings_stored,&recordings_live, }
382 };
383
384 static int load_module(void)
385 {
386         stasis_app_ref();
387         return stasis_http_add_handler(&recordings);
388 }
389
390 static int unload_module(void)
391 {
392         stasis_http_remove_handler(&recordings);
393         stasis_app_unref();
394         return 0;
395 }
396
397 AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "RESTful API module - Recording resources",
398         .load = load_module,
399         .unload = unload_module,
400         .nonoptreq = "res_stasis_http,res_stasis",
401         );