convertDiagram method

Future<String> convertDiagram(
  1. String diagramType,
  2. String diagramSource
)

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;
  });
}