From 2e6466cd1c576179c46e9ab73a894dc3754eca1e Mon Sep 17 00:00:00 2001
From: "guilhem.carron" <gcarron@grandlyon.com>
Date: Tue, 23 Nov 2021 15:06:49 +0100
Subject: [PATCH] feat(analysis): Add maxpower data endpoint

---
 src/index.js | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/src/index.js b/src/index.js
index b8675f5..4f0a09c 100644
--- a/src/index.js
+++ b/src/index.js
@@ -31,6 +31,7 @@ const endDateString = endDate.format('YYYY-MM-DD')
 const baseUrl = 'https://gw.prd.api.enedis.fr'
 const dailyDataURL = `${baseUrl}/v4/metering_data/daily_consumption`
 const loadCurveURL = `${baseUrl}/v4/metering_data/consumption_load_curve`
+const maxPowerURL = `${baseUrl}/v4/metering_data/daily_consumption_max_power`
 
 /**
  * The start function is run by the BaseKonnector instance only when it got all the account
@@ -80,6 +81,16 @@ async function start(fields, cozyParameters, doRetry = true) {
     await agregateMonthAndYearData(processedDailyData)
     log('info', 'Process enedis load data')
     await startLoadDataProcess(access_token, usage_point_id)
+
+    log('info', 'Fetching enedis max Power data')
+    const fetchedMaxPowerData = await getMaxPower(access_token, usage_point_id)
+    log('info', 'Process enedis maxPower data')
+
+    await processData(fetchedMaxPowerData, 'com.grandlyon.enedis.maxpower', [
+      'year',
+      'month',
+      'day',
+    ])
   } catch (err) {
     if (err.statusCode === 403 || err.code === 403) {
       if (!fields.refresh_token) {
@@ -137,6 +148,30 @@ async function getDailyData(token, usagePointID) {
   return response
 }
 
+/**
+ * Retrieve data from the max Power endpoint
+ * Format: { value: "VA", "date": "YYYY-MM-DD" }
+ */
+async function getMaxPower(token, usagePointID) {
+  const dataRequest = {
+    method: 'GET',
+    uri:
+      maxPowerURL +
+      '?start=' +
+      startDailyDateString +
+      '&end=' +
+      endDateString +
+      '&usage_point_id=' +
+      usagePointID,
+    headers: {
+      Accept: 'application/json',
+      Authorization: 'Bearer ' + token,
+    },
+  }
+  const response = await rp(dataRequest)
+  return response
+}
+
 /**
  * Check if history is loaded
  * If not, call several time the api to retrieve 1 month of history for load data
-- 
GitLab