convertDiagram method
Implementation
Future<String> convertDiagram(
String diagramType, String diagramSource) async {
final String? endpoint = _getEndpointFromDiagramType(diagramType);
if (endpoint == null) {
return 'Unsupported Kroki Diagram Endpoint "$diagramType"';
}
final String md5 = cacheRequests ? generateMd5(diagramSource) : '';
if (cacheRequests && cache.containsKey(md5)) {
return cache[md5]!;
}
final stringBytes = utf8.encode(diagramSource);
final gzipBytes = ZLibEncoder().encode(stringBytes, level: 9);
final compressedString = base64Url.encode(gzipBytes);
final theuri = Uri.parse('$krokiApiUrl/$endpoint/svg/$compressedString');
return await _client.get(theuri).then((http.Response response) {
if (response.statusCode == 404) {
return 'ERROR - Kroki returned status code 404 contentNotFound for endpoint $diagramType';
} else if (response.statusCode == 403) {
return 'ERROR - Kroki returned status code 403 rateLimitExceeded for endpoint $diagramType';
} else if (response.statusCode != 200) {
return 'ERROR - Kroki returned status code ${response.statusCode} error unknown for endpoint $diagramType';
}
if (cacheRequests) {
cache[md5] = response.body;
}
return response.body;
});
}