-func validateDescriptor(payload DescriptorPayload) error {
- if payload.Manufacturer == "" || payload.Model == "" || payload.Firmware == "" || len(string([]rune(payload.Attribution))) > 2000 || len(payload.Capabilities) == 0 {
- return fmt.Errorf("descriptor metadata or capabilities are invalid")
- }
-
- seen := make(map[string]bool, len(payload.Capabilities))
-
- for _, capability := range payload.Capabilities {
- if !ValidIdentifier(capability.ID) || !ValidIdentifier(capability.Type) || seen[capability.ID] {
- return fmt.Errorf("capability IDs and types must be valid and unique")
- }
-
- if !capability.ReportsState && !capability.AcceptsCommands {
- return fmt.Errorf("capability must have at least one access mode")
- }
-
- seen[capability.ID] = true
- }
-
- return nil
-}
-