func inputTransformer()

in cmd/dns/dns.go [56:84]


func inputTransformer(input string) (interface{}, error) {
	var domain, typeString, rcodeString string

	n, err := fmt.Sscanf(input, "%s %s %s", &domain, &typeString, &rcodeString)
	if err != nil && n < 2 {
		return nil, fmt.Errorf("%w, want: \"Domain QType [RCode]\", got: %q", errors.ErrInvalidFormat, input)
	}

	msgTyp, ok := dns.StringToType[strings.ToUpper(typeString)]
	if !ok {
		return nil, fmt.Errorf("%w, invalid QType: %q", errors.ErrInvalidFormat, typeString)
	}

	msg := new(tester.ExtendedMsg)

	msg.SetQuestion(dns.Fqdn(domain), msgTyp)
	msg.Rcode = -1

	if n == 3 {
		rcode, ok := dns.StringToRcode[rcodeString]
		if !ok {
			return nil, fmt.Errorf("%w, invalid RCode: %q", errors.ErrInvalidFormat, rcodeString)
		}

		msg.Rcode = rcode
	}

	return msg, nil
}