summaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
authorManuel Bachmann <manuel.bachmann@iot.bzh>2016-01-26 16:41:24 +0100
committerManuel Bachmann <manuel.bachmann@iot.bzh>2016-01-26 16:41:24 +0100
commit14b0b56a3a63df1415b13bf410f8fee2b6661d18 (patch)
treef51a06d8328e5217f4b2a7c2435ad32d056836ca /plugins
parentc1dda27fbbbbbf14aabe5bc8b4cb2a70abfd09f0 (diff)
Finalize Media Plugin upload API with full transfer logic
We now really transfer the file to the Media Server (Rygel e.g.) when the initial POST upload function has succeeded. Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
Diffstat (limited to 'plugins')
-rw-r--r--plugins/media/media-api.c43
1 files changed, 20 insertions, 23 deletions
diff --git a/plugins/media/media-api.c b/plugins/media/media-api.c
index e91eb39c..308745d5 100644
--- a/plugins/media/media-api.c
+++ b/plugins/media/media-api.c
@@ -156,34 +156,31 @@ STATIC json_object* upload (AFB_request *request, AFB_PostItem *item) { /* AFB_S
mediaCtxHandleT *ctx = (mediaCtxHandleT*)request->context;
AFB_PostCtx *postFileCtx;
-#if 0
- const char *value = getQueryValue (request, "value");
json_object *jresp;
- char path[256];
+ char *path;
- /* no "?value=" parameter : return error */
- if (!value)
- return jsonNewMessage(AFB_FAIL, "You must provide a file name");
-#endif
- if (item == NULL) {
- postFileCtx = getPostContext (request);
- if (postFileCtx) {
- postFileCtx->errcode = MHD_HTTP_OK;
- postFileCtx->jresp = jsonNewMessage (AFB_SUCCESS, "upload=%s done", getPostPath (request));
- }
- }
+ /* item is !NULL until transfer is complete */
+ if (item != NULL)
+ return getPostFile (request, item, "media");
- return getPostFile (request, item, "media");
-#if 0
- snprintf (path, sizeof(path), "/tmp/%s", value);
- if (access (path, R_OK) == -1)
- return jsonNewMessage(AFB_FAIL, "File not found");
+ /* target intermediary file path */
+ path = getPostPath (request);
- if (!_rygel_upload (ctx, path))
- return jsonNewMessage(AFB_FAIL, "Error when uploading file... could not complete");
+ if (!path)
+ fprintf (stderr, "Error encoutered during intermediary file transfer\n");
+
+ else if (!_rygel_upload (ctx, path)) {
+ request->errcode = MHD_HTTP_EXPECTATION_FAILED;
+ request->jresp = jsonNewMessage (AFB_FAIL, "Error when uploading file to media server... could not complete");
+ }
+
+ else {
+ request->errcode = MHD_HTTP_OK;
+ request->jresp = jsonNewMessage (AFB_SUCCESS, "upload=%s done", path);
+ }
- return jsonNewMessage(AFB_SUCCESS, "File successfully uploaded");
-#endif
+ /* finalizes file transfer */
+ return getPostFile (request, item, NULL);
}
STATIC json_object* ping (AFB_request *request) { /* AFB_SESSION_NONE */