@@ -23,11 +23,11 @@ import (
2323 "go.yaml.in/yaml/v4"
2424)
2525
26- func devicesConfig [T any ](class templates.Class , h config.Handler [T ]) ([]map [string ]any , error ) {
26+ func devicesConfig [T any ](class templates.Class , h config.Handler [T ], hidePrivate bool ) ([]map [string ]any , error ) {
2727 var res []map [string ]any
2828
2929 for _ , dev := range h .Devices () {
30- dc , err := deviceConfigMap (class , dev )
30+ dc , err := deviceConfigMap (class , dev , hidePrivate )
3131 if err != nil {
3232 return nil , err
3333 }
@@ -54,20 +54,23 @@ func devicesConfigHandler(w http.ResponseWriter, r *http.Request) {
5454 return
5555 }
5656
57+ // Check if private data should be hidden (default: true, showing private data)
58+ hidePrivate := r .URL .Query ().Get ("private" ) == "false"
59+
5760 var res []map [string ]any
5861
5962 switch class {
6063 case templates .Meter :
61- res , err = devicesConfig (class , config .Meters ())
64+ res , err = devicesConfig (class , config .Meters (), hidePrivate )
6265
6366 case templates .Charger :
64- res , err = devicesConfig (class , config .Chargers ())
67+ res , err = devicesConfig (class , config .Chargers (), hidePrivate )
6568
6669 case templates .Vehicle :
67- res , err = devicesConfig (class , config .Vehicles ())
70+ res , err = devicesConfig (class , config .Vehicles (), hidePrivate )
6871
6972 case templates .Circuit :
70- res , err = devicesConfig (class , config .Circuits ())
73+ res , err = devicesConfig (class , config .Circuits (), hidePrivate )
7174 }
7275
7376 if err != nil {
@@ -78,7 +81,7 @@ func devicesConfigHandler(w http.ResponseWriter, r *http.Request) {
7881 jsonWrite (w , res )
7982}
8083
81- func deviceConfigMap [T any ](class templates.Class , dev config.Device [T ]) (map [string ]any , error ) {
84+ func deviceConfigMap [T any ](class templates.Class , dev config.Device [T ], hidePrivate bool ) (map [string ]any , error ) {
8285 conf := dev .Config ()
8386
8487 dc := map [string ]any {
@@ -102,7 +105,7 @@ func deviceConfigMap[T any](class templates.Class, dev config.Device[T]) (map[st
102105 }
103106
104107 if conf .Type == typeTemplate {
105- params , err := sanitizeMasked (class , conf .Other )
108+ params , err := sanitizeMasked (class , conf .Other , hidePrivate )
106109 if err != nil {
107110 return nil , err
108111 }
@@ -146,13 +149,13 @@ func deviceConfigMap[T any](class templates.Class, dev config.Device[T]) (map[st
146149 return dc , nil
147150}
148151
149- func deviceConfig [T any ](class templates.Class , id int , h config.Handler [T ]) (map [string ]any , error ) {
152+ func deviceConfig [T any ](class templates.Class , id int , h config.Handler [T ], hidePrivate bool ) (map [string ]any , error ) {
150153 dev , err := h .ByName (config .NameForID (id ))
151154 if err != nil {
152155 return nil , err
153156 }
154157
155- return deviceConfigMap (class , dev )
158+ return deviceConfigMap (class , dev , hidePrivate )
156159}
157160
158161// deviceConfigHandler returns a device configuration by class
@@ -171,20 +174,23 @@ func deviceConfigHandler(w http.ResponseWriter, r *http.Request) {
171174 return
172175 }
173176
177+ // Check if private data should be hidden (default: true, showing private data)
178+ hidePrivate := r .URL .Query ().Get ("private" ) == "false"
179+
174180 var res map [string ]any
175181
176182 switch class {
177183 case templates .Meter :
178- res , err = deviceConfig (class , id , config .Meters ())
184+ res , err = deviceConfig (class , id , config .Meters (), hidePrivate )
179185
180186 case templates .Charger :
181- res , err = deviceConfig (class , id , config .Chargers ())
187+ res , err = deviceConfig (class , id , config .Chargers (), hidePrivate )
182188
183189 case templates .Vehicle :
184- res , err = deviceConfig (class , id , config .Vehicles ())
190+ res , err = deviceConfig (class , id , config .Vehicles (), hidePrivate )
185191
186192 case templates .Circuit :
187- res , err = deviceConfig (class , id , config .Circuits ())
193+ res , err = deviceConfig (class , id , config .Circuits (), hidePrivate )
188194 }
189195
190196 if err != nil {
0 commit comments