resolveSource method

FutureOr<Map<String, dynamic>> resolveSource(
  1. Object? source, {
  2. String? workingPath,
})

Implementation

FutureOr<Map<String, dynamic>> resolveSource(
  Object? source, {
  String? workingPath,
}) {
  if (source == null) {
    return <String, dynamic>{};
  } else if (source is Map<String, dynamic>) {
    return source;
  } else if (source is String) {
    if (RegExp(r'^\S+\.json$').hasMatch(source)) {
      var apiPlatform = APIPlatform.get();

      var filePath = apiPlatform.resolveFilePath(
        source,
        parentPath: workingPath,
      );

      if (filePath == null) {
        throw StateError("Can't resolve source file path: $source");
      }

      _log.info('Reading $this source file: $filePath');

      var fileData = apiPlatform.readFileAsString(filePath);

      if (fileData != null) {
        return fileData.resolveMapped((data) {
          if (data != null) {
            return Json.decode<dynamic>(data);
          } else {
            return <String, dynamic>{};
          }
        });
      }
    } else {
      return Json.decode<dynamic>(source);
    }
  }

  return <String, List<Object>>{};
}