From: Manuel Bachmann Date: Tue, 26 Jan 2016 15:41:24 +0000 (+0100) Subject: Finalize Media Plugin upload API with full transfer logic X-Git-Tag: blowfish_2.0.1~285 X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=commitdiff_plain;h=14b0b56a3a63df1415b13bf410f8fee2b6661d18;p=src%2Fapp-framework-binder.git 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 --- 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 */