Codebase list golang-github-go-playground-validator-v10 / 4cb9152
correct IsUPDAddrResolvable functions joeybloggs 8 years ago
2 changed file(s) with 39 addition(s) and 8 deletion(s). Raw diff Collapse all Expand all
8686 "tcp4_addr": IsTCP4AddrResolvable,
8787 "tcp6_addr": IsTCP6AddrResolvable,
8888 "tcp_addr": IsTCPAddrResolvable,
89 "udp4_addr": IsUDP4AddrResolvable, // need to do
90 "udp6_addr": IsUDP6AddrResolvable, // need to do
91 "udp_addr": IsUDPAddrResolvable, // need to do
89 "udp4_addr": IsUDP4AddrResolvable,
90 "udp6_addr": IsUDP6AddrResolvable,
91 "udp_addr": IsUDPAddrResolvable,
9292 "ip4_addr": IsIP4AddrResolvable,
9393 "ip6_addr": IsIP6AddrResolvable,
9494 "ip_addr": IsIPAddrResolvable,
13011301 // IsUDP4AddrResolvable is the validation function for validating if the field's value is a resolvable udp4 address.
13021302 // NOTE: This is exposed for use within your own custom functions and not intended to be called directly.
13031303 func IsUDP4AddrResolvable(v *Validate, topStruct reflect.Value, currentStructOrField reflect.Value, field reflect.Value, fieldType reflect.Type, fieldKind reflect.Kind, param string) bool {
1304
1305 val := field.String()
1306
1307 if idx := strings.LastIndex(val, ":"); idx != -1 {
1308 val = val[0:idx]
1309 }
1310
1311 if !IsIPv4(v, topStruct, currentStructOrField, reflect.ValueOf(val), fieldType, fieldKind, param) {
1312 return false
1313 }
1314
13041315 _, err := net.ResolveUDPAddr("udp4", field.String())
13051316 return err == nil
13061317 }
13081319 // IsUDP6AddrResolvable is the validation function for validating if the field's value is a resolvable udp6 address.
13091320 // NOTE: This is exposed for use within your own custom functions and not intended to be called directly.
13101321 func IsUDP6AddrResolvable(v *Validate, topStruct reflect.Value, currentStructOrField reflect.Value, field reflect.Value, fieldType reflect.Type, fieldKind reflect.Kind, param string) bool {
1322
1323 val := field.String()
1324
1325 if idx := strings.LastIndex(val, ":"); idx != -1 {
1326 if idx != 0 && val[idx-1:idx] == "]" {
1327 val = val[1 : idx-1]
1328 }
1329 }
1330
1331 if !IsIPv6(v, topStruct, currentStructOrField, reflect.ValueOf(val), fieldType, fieldKind, param) {
1332 return false
1333 }
1334
13111335 _, err := net.ResolveUDPAddr("udp6", field.String())
13121336 return err == nil
13131337 }
13151339 // IsUDPAddrResolvable is the validation function for validating if the field's value is a resolvable udp address.
13161340 // NOTE: This is exposed for use within your own custom functions and not intended to be called directly.
13171341 func IsUDPAddrResolvable(v *Validate, topStruct reflect.Value, currentStructOrField reflect.Value, field reflect.Value, fieldType reflect.Type, fieldKind reflect.Kind, param string) bool {
1342
1343 // if string before the post is blank then invalid
1344 if !IsUDP4AddrResolvable(v, topStruct, currentStructOrField, field, fieldType, fieldKind, param) &&
1345 !IsUDP6AddrResolvable(v, topStruct, currentStructOrField, field, fieldType, fieldKind, param) {
1346 return false
1347 }
1348
13181349 _, err := net.ResolveUDPAddr("udp", field.String())
13191350 return err == nil
13201351 }
20862086 param string
20872087 expected bool
20882088 }{
2089 {":80", true},
2089 {":80", false},
20902090 {"127.0.0.1:80", true},
20912091 {"[::1]:80", true},
20922092 {"256.0.0.0:1", false},
21172117 param string
21182118 expected bool
21192119 }{
2120 {":80", true},
2121 {"127.0.0.1:80", true},
2120 {":80", false},
2121 {"127.0.0.1:80", false},
21222122 {"[::1]:80", true},
21232123 {"256.0.0.0:1", false},
21242124 {"[::1]", false},
21482148 param string
21492149 expected bool
21502150 }{
2151 {":80", true},
2151 {":80", false},
21522152 {"127.0.0.1:80", true},
2153 {"[::1]:80", true}, // https://github.com/golang/go/issues/14037
2153 {"[::1]:80", false}, // https://github.com/golang/go/issues/14037
21542154 {"256.0.0.0:1", false},
21552155 {"[::1]", false},
21562156 }