validateConnectivity static method
Validates network connectivity to Frappe endpoints
Implementation
static Future<ValidationResult> validateConnectivity(OAuthConfig config) async {
final issues = <String>[];
final suggestions = <String>[];
try {
// Validate authorization endpoint
final authIssues = await UrlBuilder.validateEndpoint(config.authorizationEndpoint);
issues.addAll(authIssues.map((issue) => 'Authorization endpoint: $issue'));
// Validate token endpoint
final tokenIssues = await UrlBuilder.validateEndpoint(config.tokenEndpoint);
issues.addAll(tokenIssues.map((issue) => 'Token endpoint: $issue'));
// Validate user info endpoint
final userInfoIssues = await UrlBuilder.validateEndpoint(config.userInfoEndpoint);
issues.addAll(userInfoIssues.map((issue) => 'User info endpoint: $issue'));
if (issues.isNotEmpty) {
suggestions.addAll([
'Check your internet connection',
'Verify the Frappe server is accessible',
'Ensure the base URL is correct',
'Check if the server requires VPN access',
]);
}
} catch (e) {
issues.add('Network connectivity test failed: $e');
suggestions.add('Check your network connection and try again');
}
if (issues.isEmpty) {
return ValidationResult.success(
context: {
'connectivityTest': 'passed',
'testedAt': DateTime.now().toIso8601String(),
},
);
}
return ValidationResult.failure(
issues: issues,
suggestions: suggestions,
context: {
'connectivityTest': 'failed',
'testedAt': DateTime.now().toIso8601String(),
},
);
}