@@ -367,20 +367,26 @@ String get_query_id(const String &jsonResults) {
367
367
368
368
StaticJsonDocument<DET_DOC_SIZE> groundlight_json_doc;
369
369
370
- // Parses the detectors from the Groundlight API.
371
370
detector_list get_detector_list (const char *endpoint, const char *apiToken) {
372
371
deserializeJson (groundlight_json_doc, get_detectors (endpoint, apiToken));
373
372
JsonArray detectors = groundlight_json_doc[" results" ];
374
373
detector *_detector_list = new detector[detectors.size ()];
375
374
for (int i = 0 ; i < detectors.size (); i++)
376
375
{
377
376
_detector_list[i].confidence_threshold = detectors[i][" confidence_threshold" ];
378
- strcpy (_detector_list[i].id , detectors[i][" id" ]);
379
- strcpy (_detector_list[i].type , detectors[i][" type" ]);
380
- strcpy (_detector_list[i].created_at , detectors[i][" created_at" ]);
381
- strcpy (_detector_list[i].name , detectors[i][" name" ]);
382
- strcpy (_detector_list[i].query , detectors[i][" query" ]);
383
- strcpy (_detector_list[i].group_name , detectors[i][" group_name" ]);
377
+ strlcpy (_detector_list[i].id , detectors[i][" id" ], sizeof (_detector_list[i].id ));
378
+ strlcpy (_detector_list[i].type , detectors[i][" type" ], sizeof (_detector_list[i].type ));
379
+ strlcpy (_detector_list[i].created_at , detectors[i][" created_at" ], sizeof ((_detector_list[i].created_at )));
380
+ strlcpy (_detector_list[i].name , detectors[i][" name" ], sizeof (_detector_list[i].name ));
381
+ strlcpy (_detector_list[i].query , detectors[i][" query" ], sizeof (_detector_list[i].query ));
382
+ strlcpy (_detector_list[i].group_name , detectors[i][" group_name" ], sizeof (_detector_list[i].group_name ));
383
+ if (!detectors[i][" metadata" ].isNull ()) {
384
+ String metadataStr;
385
+ serializeJson (detectors[i][" metadata" ], metadataStr);
386
+ strlcpy (_detector_list[i].metadata , metadataStr.c_str (), sizeof (_detector_list[i].metadata ));
387
+ } else {
388
+ _detector_list[i].metadata [0 ] = ' \0 ' ;
389
+ }
384
390
}
385
391
detector_list res = { _detector_list, detectors.size () };
386
392
return res;
@@ -401,16 +407,38 @@ String detector_to_string(detector d) {
401
407
res += d.group_name ;
402
408
res += " \n\t Confidence threshold: " ;
403
409
res += d.confidence_threshold ;
410
+ res += " \n\t Metadata: " ;
411
+ res += d.metadata ;
404
412
return res;
405
413
}
406
414
407
415
detector get_detector_by_id (const char *endpoint, const char *detectorId, const char *apiToken) {
408
416
detector_list detectors = get_detector_list (endpoint, apiToken);
417
+ detector det = { " NONE" , " NONE" , " NONE" , " NONE" , " NONE" , " NONE" , 0.0 , " None" };
409
418
for (int i = 0 ; i < detectors.size ; i++) {
410
419
if (String (detectors.detectors [i].id ) == String (detectorId)) {
411
- return detectors.detectors [i];
420
+ det = detectors.detectors [i];
421
+ break ;
422
+ }
423
+ }
424
+ if (0 <detectors.size ){
425
+ delete[] detectors.detectors ;
426
+ }
427
+ return det;
428
+ }
429
+
430
+ detector get_detector_by_name (const char *endpoint, const char *detectorName, const char *apiToken) {
431
+ detector_list detectors = get_detector_list (endpoint, apiToken);
432
+ detector det = { " NONE" , " NONE" , " NONE" , " NONE" , " NONE" , " NONE" , 0.0 , " None" };
433
+ for (int i = 0 ; i < detectors.size ; i++) {
434
+ if (String (detectors.detectors [i].name ) == String (detectorName)) {
435
+ det = detectors.detectors [i];
412
436
}
413
437
}
414
- return detector { " NONE" , " NONE" , " NONE" , " NONE" , " NONE" , " NONE" , 0.0 };
438
+ if (0 <detectors.size ){
439
+ delete[] detectors.detectors ;
440
+ }
441
+
442
+ return det;
415
443
}
416
444
#endif
0 commit comments