mirror of
https://github.com/NginxProxyManager/nginx-proxy-manager.git
synced 2025-07-04 17:06:49 +00:00
Moved v3 code from NginxProxyManager/nginx-proxy-manager-3 to NginxProxyManager/nginx-proxy-manager
This commit is contained in:
36
backend/internal/util/interfaces.go
Normal file
36
backend/internal/util/interfaces.go
Normal file
@ -0,0 +1,36 @@
|
||||
package util
|
||||
|
||||
// FindItemInInterface Find key in interface (recursively) and return value as interface
|
||||
func FindItemInInterface(key string, obj interface{}) (interface{}, bool) {
|
||||
// if the argument is not a map, ignore it
|
||||
mobj, ok := obj.(map[string]interface{})
|
||||
if !ok {
|
||||
return nil, false
|
||||
}
|
||||
|
||||
for k, v := range mobj {
|
||||
// key match, return value
|
||||
if k == key {
|
||||
return v, true
|
||||
}
|
||||
|
||||
// if the value is a map, search recursively
|
||||
if m, ok := v.(map[string]interface{}); ok {
|
||||
if res, ok := FindItemInInterface(key, m); ok {
|
||||
return res, true
|
||||
}
|
||||
}
|
||||
// if the value is an array, search recursively
|
||||
// from each element
|
||||
if va, ok := v.([]interface{}); ok {
|
||||
for _, a := range va {
|
||||
if res, ok := FindItemInInterface(key, a); ok {
|
||||
return res, true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// element not found
|
||||
return nil, false
|
||||
}
|
Reference in New Issue
Block a user