validateDomain function

Map<String, dynamic> validateDomain(
  1. String domain
)

Implementation

Map<String, dynamic> validateDomain(String domain) {
  final parts = domain.split('.');

  if (parts.length < 2 || parts[1] != 'xrd') {
    return {
      'valid': false,
      'message': 'Invalid domain extension.',
    };
  }

  if (parts[0].length < 2) {
    return {
      'valid': false,
      'message': 'Domain name must be 2+ characters in length.',
    };
  }

  if (parts[0].length > 65) {
    return {
      'valid': false,
      'message': 'Max domain length is 65 characters.',
    };
  }

  if (domain.contains('_')) {
    return {
      'valid': false,
      'message': 'Special characters are not permitted (except for hyphens).',
    };
  }

  final regex = RegExp(
      r'^(([a-zA-Z0-9]{2,})|([a-zA-Z]{1}[a-zA-Z]{1})|([a-zA-Z]{1}[0-9]{1})|([0-9]{1}[a-zA-Z]{1})|([a-zA-Z0-9][a-zA-Z0-9-_]{1,61}[a-zA-Z0-9]))\.xrd$');

  if (!regex.hasMatch(domain)) {
    return {
      'valid': false,
      'message': 'Please enter a valid domain name.',
    };
  }

  return {
    'valid': true,
    'message': '',
  };
}