validate method
Validates the configuration and returns a list of issues
Implementation
List<String> validate() {
final issues = <String>[];
// Validate base URL
if (baseUrl.isEmpty) {
issues.add('Base URL cannot be empty');
} else {
final uri = Uri.tryParse(baseUrl);
if (uri == null || !uri.hasScheme || !uri.hasAuthority) {
issues.add('Base URL must be a valid URL with scheme and host');
} else if (!['http', 'https'].contains(uri.scheme)) {
issues.add('Base URL must use http or https scheme');
}
}
// Validate client ID
if (clientId.isEmpty) {
issues.add('Client ID cannot be empty');
}
// Validate redirect scheme
if (redirectScheme.isEmpty) {
issues.add('Redirect scheme cannot be empty');
} else if (redirectScheme.contains('://')) {
issues.add('Redirect scheme should not contain ://');
} else if (!RegExp(r'^[a-zA-Z][a-zA-Z0-9+.-]*$').hasMatch(redirectScheme)) {
issues.add('Redirect scheme must be a valid URL scheme');
}
// Validate scopes
if (scopes.isEmpty) {
issues.add('At least one scope must be specified');
}
// Validate thresholds
if (tokenRefreshThreshold.isNegative) {
issues.add('Token refresh threshold cannot be negative');
}
if (networkTimeout.isNegative || networkTimeout.inSeconds < 1) {
issues.add('Network timeout must be at least 1 second');
}
return issues;
}