mirror of
https://github.com/cedricve/go-onvif.git
synced 2025-09-27 04:45:54 +08:00

Updated discoverDevices and createUserToken functions to handle errors properly. This includes the rare possibility createUserToken could send a new SOAP fault message if a uuid can not be generated (only in out-of-memory situations). Added vendoring to prevent future dependency issues. Side Note: Had vendoring not been added, the uuid dependency would cause problems if this go-onvif package was added to a project using vendoring. This is due to go defaulting to a last commit to the master branch, while vendoring defaults to the last published version. This quirk was obvious after seeing the uuid package pushed the breaking change to the master without also pushing it as a new version.
38 lines
765 B
Go
38 lines
765 B
Go
package mxj
|
|
|
|
import "strings"
|
|
|
|
// Removes the path.
|
|
func (mv Map) Remove(path string) error {
|
|
m := map[string]interface{}(mv)
|
|
return remove(m, path)
|
|
}
|
|
|
|
func remove(m interface{}, path string) error {
|
|
val, err := prevValueByPath(m, path)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
lastKey := lastKey(path)
|
|
delete(val, lastKey)
|
|
|
|
return nil
|
|
}
|
|
|
|
// returns the last key of the path.
|
|
// lastKey("a.b.c") would had returned "c"
|
|
func lastKey(path string) string {
|
|
keys := strings.Split(path, ".")
|
|
key := keys[len(keys)-1]
|
|
return key
|
|
}
|
|
|
|
// returns the path without the last key
|
|
// parentPath("a.b.c") whould had returned "a.b"
|
|
func parentPath(path string) string {
|
|
keys := strings.Split(path, ".")
|
|
parentPath := strings.Join(keys[0:len(keys)-1], ".")
|
|
return parentPath
|
|
}
|