6627b1c33bdef1886f84fce4df14d0dd5c786657 chmalee Fri Mar 8 17:10:21 2024 -0800 Make the DataTable update dynamically. Correctly use a hidden file input to keep track of submitted and unsubmitted files diff --git src/hg/hgHubConnect/hooks/hooklib.c src/hg/hgHubConnect/hooks/hooklib.c index 66bd219..0af1dc1 100644 --- src/hg/hgHubConnect/hooks/hooklib.c +++ src/hg/hgHubConnect/hooks/hooklib.c @@ -4,41 +4,69 @@ * See kent/LICENSE or http://genome.ucsc.edu/license/ for licensing information. */ #include "common.h" #include "linefile.h" #include "hash.h" #include "options.h" #include "wikiLink.h" #include "customTrack.h" #include "userdata.h" #include "jsonQuery.h" #include "jsHelper.h" #include "errCatch.h" #include "obscure.h" #include "hooklib.h" +char *prettyFileSize(long size) +/* Return a string representing the size of a file */ +{ +char buf[32]; +sprintWithGreekByte(buf, sizeof(buf), size); +return cloneString(buf); +} + void fillOutHttpResponseError() { fprintf(stderr, "http response error!\n"); } void fillOutHttpResponseSuccess() { fprintf(stderr, "http response success!\n"); } +struct jsonElement *makeDefaultResponse() +/* Create the default response json with some fields pre-filled */ +{ +struct hash *defHash = hashNew(0); +struct jsonElement *response = newJsonObject(defHash); +// only the HTTP Response object is important to have by default, the other +// fields will be created as needed +struct jsonElement *httpResponse = newJsonObject(hashNew(0)); +jsonObjectAdd(httpResponse, HTTP_STATUS, newJsonNumber(200)); // default to a successful response +jsonObjectAdd(httpResponse, HTTP_BODY, newJsonString("")); +struct jsonElement *header = newJsonObject(hashNew(0)); +jsonObjectAdd(header, HTTP_CONTENT_TYPE, newJsonString(HTTP_CONTENT_TYPE_STR)); +jsonObjectAdd(httpResponse, HTTP_HEADER, header); +jsonObjectAdd(response, HTTP_NAME, httpResponse); +return response; +} + void rejectUpload(struct jsonElement *response, char *msg, ...) /* Set the keys for stopping an upload */ { // first set the necessary keys to reject the request jsonObjectAdd(response, REJECT_SETTING, newJsonBoolean(TRUE)); jsonObjectAdd(response, STOP_SETTING, newJsonBoolean(TRUE)); // now format the message va_list args; va_start(args, msg); struct dyString *ds = dyStringNew(0); dyStringVaPrintf(ds, msg, args); va_end(args); -jsonObjectAdd(response, ERR_MSG, newJsonString(dyStringCannibalize(&ds))); +// find the HTTPResponse object and fill it out with msg: +struct jsonElement *httpResponse = jsonFindNamedField(response, "", HTTP_NAME); +jsonObjectAdd(httpResponse, HTTP_STATUS, newJsonNumber(500)); +jsonObjectAdd(httpResponse, HTTP_BODY, newJsonString(dyStringCannibalize(&ds))); }