From ec82d5d9d605eb04a1854c8fcb6ad7a0cfacef13 Mon Sep 17 00:00:00 2001 From: Paul Weidner Date: Wed, 15 Jan 2020 13:56:32 -0800 Subject: [PATCH] Create farm_metrics.json endpoint to expose metrics over API. --- .../farm_metrics/farm_metrics.farm_access.inc | 21 ++++++++ modules/farm/farm_metrics/farm_metrics.module | 50 +++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 modules/farm/farm_metrics/farm_metrics.farm_access.inc diff --git a/modules/farm/farm_metrics/farm_metrics.farm_access.inc b/modules/farm/farm_metrics/farm_metrics.farm_access.inc new file mode 100644 index 00000000..ec93be45 --- /dev/null +++ b/modules/farm/farm_metrics/farm_metrics.farm_access.inc @@ -0,0 +1,21 @@ + array( + 'title' => t('Access the farmOS metrics endpoint'), + ), + ); + return $perms; +} + +/** + * Implements hook_menu(). + */ +function farm_metrics_menu() { + + // General farm metrics JSON endpoint. + $items['farm_metrics.json'] = array( + 'page callback' => 'farm_metrics_info', + 'access arguments' => array('access farm metrics'), + 'type' => MENU_CALLBACK, + ); + + return $items; +} + +/** + * Farm metrics API callback. + */ +function farm_metrics_info() { + + // Ask modules for metrics. + $metrics = module_invoke_all('farm_metrics'); + + // Make sure all metrics have defaults set. + $defaults = array( + 'label' => '', + 'value' => '0', + 'link' => 'farm', + 'weight' => 0, + ); + foreach ($metrics as $key => $metric) { + $label = $metric['label']; + $metrics[$key] = array_merge($defaults, $metric); + } + + drupal_json_output($metrics); +}