getData method

Future<Uint8List?> getData(
  1. [int maxSize = 10485760]
)

Downloads the data at this reference.

Parameters:

  • maxSize: Optional maximum size in bytes (default 10MB).

Returns: A Future that resolves to the data as Uint8List or null.

Example:

Uint8List? data = await ref.getData();

Implementation

Future<Uint8List?> getData([int maxSize = 10485760]) async {
  assert(maxSize > 0);
  if (maxSize <= 0) {
    throw Utils.storageErrorHandler(
      400,
      StorageErrorMessages.format(StorageErrorMessages.EXPECTED_TYPE, [
        'positive maxSize',
        maxSize.toString(),
      ]),
      null,
    );
  }

  final metadata = await getMetadata();
  final objectSize = metadata.size;
  if (objectSize == null) {
    throw Utils.storageErrorHandler(
      400,
      StorageErrorMessages.UNKNOWN_DOWNLOAD_SIZE,
      null,
    );
  }
  if (objectSize > maxSize) {
    throw Utils.storageErrorHandler(
      400,
      StorageErrorMessages.format(
        StorageErrorMessages.DOWNLOAD_EXCEEDS_MAX_SIZE,
        [objectSize, maxSize],
      ),
      null,
    );
  }

  FusabaseAuth auth = FusabaseAuth.instanceFor(app: this.storage.app);
  String? accessToken = await getAccessToken(auth);

  String url =
      "${StorageHelper.get_url(storage._config)}${globals.downloadObjRESTEP}";
  // if (StorageHelper.isPrem(storage._config)) {
  //   final_url = StorageHelper._PARequestURL(storage._config) + url;
  // } else {
  //   final_url = url;
  // }
  return StorageHelper.getDataHelper(
    createClient(storage.app),
    url,
    fullPath,
    bucket,
    storage._config,
    storage._maxDownloadRetryTime,
    __logLevel,
    accessToken,
  );
}