diff --git a/src/common/jsonconfig.h b/src/common/jsonconfig.h index 5dbfcc68f..d66636d2a 100644 --- a/src/common/jsonconfig.h +++ b/src/common/jsonconfig.h @@ -15,3 +15,11 @@ yyjson_api_inline bool yyjson_mut_obj_add_strbuf(yyjson_mut_doc *doc, const FFstrbuf* buf) { return yyjson_mut_obj_add_strncpy(doc, obj, _key, buf->chars, buf->length); } + +yyjson_api_inline yyjson_mut_val* yyjson_mut_obj_add_obj(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key) { + yyjson_mut_val* newObj = yyjson_mut_obj(doc); + yyjson_mut_obj_add_val(doc, obj, _key, newObj); + return newObj; +} diff --git a/src/modules/de/de.c b/src/modules/de/de.c index 80e69b854..a6d896d7c 100644 --- a/src/modules/de/de.c +++ b/src/modules/de/de.c @@ -42,7 +42,7 @@ void ffPrintDE(FFDEOptions* options) void ffInitDEOptions(FFDEOptions* options) { - ffOptionInitModuleBaseInfo(&options->moduleInfo, FF_DE_MODULE_NAME, ffParseDECommandOptions, ffParseDEJsonObject, ffPrintDE, NULL); + ffOptionInitModuleBaseInfo(&options->moduleInfo, FF_DE_MODULE_NAME, ffParseDECommandOptions, ffParseDEJsonObject, ffPrintDE, ffGenerateDEJson); ffOptionInitModuleArg(&options->moduleArgs); } @@ -77,3 +77,19 @@ void ffParseDEJsonObject(FFDEOptions* options, yyjson_val* module) ffPrintError(FF_DE_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); } } + +void ffGenerateDEJson(FF_MAYBE_UNUSED FFDEOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) +{ + const FFDisplayServerResult* result = ffConnectDisplayServer(); + + if(result->dePrettyName.length == 0) + { + yyjson_mut_obj_add_str(doc, module, "error", "No DE found"); + return; + } + + yyjson_mut_val* obj = yyjson_mut_obj_add_obj(doc, module, "result"); + yyjson_mut_obj_add_strbuf(doc, obj, "processName", &result->deProcessName); + yyjson_mut_obj_add_strbuf(doc, obj, "prettyName", &result->dePrettyName); + yyjson_mut_obj_add_strbuf(doc, obj, "version", &result->deVersion); +} diff --git a/src/modules/de/de.h b/src/modules/de/de.h index 0a4e14541..b8d122184 100644 --- a/src/modules/de/de.h +++ b/src/modules/de/de.h @@ -9,3 +9,4 @@ void ffInitDEOptions(FFDEOptions* options); bool ffParseDECommandOptions(FFDEOptions* options, const char* key, const char* value); void ffDestroyDEOptions(FFDEOptions* options); void ffParseDEJsonObject(FFDEOptions* options, yyjson_val* module); +void ffGenerateDEJson(FFDEOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module);