MCPcopy Create free account
hub / github.com/cisco/senml / IsValid

Function IsValid

senml.go:427–508  ·  view source on GitHub ↗

Test if SenML is valid

(senml SenML)

Source from the content-addressed store, hash-verified

425
426// Test if SenML is valid
427func IsValid(senml SenML) bool {
428 var bname string = ""
429 var bver = -1
430
431 //fmt.Println("In Validate")
432
433 for _, r := range senml.Records {
434
435 // Check version is same for all records
436 if bver == -1 {
437 // set the bver the first time it is seen
438 if r.BaseVersion != 0 {
439 bver = r.BaseVersion
440 }
441 } else {
442 if r.BaseVersion != 0 {
443 // next time a version in seen, check it has not changed
444 if r.BaseVersion != bver {
445 //fmt.Println("unallowed version change ")
446 return false
447 }
448 }
449 }
450
451 // Check name
452 if len(r.BaseName) > 0 {
453 bname = r.BaseName
454 }
455 name := bname + r.Name
456 if len(name) == 0 {
457 //fmt.Println("empty name")
458
459 return false
460 }
461 if (name[0] == '-') || (name[0] == ':') || (name[0] == '.') || (name[0] == '/') || (name[0] == '_') {
462 //fmt.Println("Bad first char in name")
463 return false
464 }
465 for _, l := range name {
466 if (l < 'a' || l > 'z') && (l < 'A' || l > 'Z') && (l < '0' || l > '9') && (l != '-') && (l != ':') && (l != '.') && (l != '/') && (l != '_') {
467 //fmt.Println("Bad char in name")
468 return false
469 }
470 }
471
472 valueCount := 0
473 if r.Value != nil {
474 valueCount = valueCount + 1
475 }
476 if r.BoolValue != nil {
477 valueCount = valueCount + 1
478 }
479 if len(r.DataValue) > 0 {
480 valueCount = valueCount + 1
481 }
482 if len(r.StringValue) > 0 {
483 valueCount = valueCount + 1
484 }

Callers 1

DecodeFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected