Initial commit
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
sealed class DownloadException implements Exception {
|
||||
final String message;
|
||||
|
||||
const DownloadException(this.message);
|
||||
|
||||
@override
|
||||
String toString() => '$runtimeType: $message';
|
||||
}
|
||||
|
||||
final class NetworkException extends DownloadException {
|
||||
const NetworkException(super.message);
|
||||
}
|
||||
|
||||
final class RemoteException extends DownloadException {
|
||||
const RemoteException(super.message);
|
||||
}
|
||||
|
||||
final class IoException extends DownloadException {
|
||||
const IoException(super.message);
|
||||
}
|
||||
|
||||
final class CancelledException extends DownloadException {
|
||||
const CancelledException() : super('Cancelled');
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
/// Represents the state of a download.
|
||||
final class DownloadProgress {
|
||||
/// Download speed in bytes per second.
|
||||
final int speed;
|
||||
|
||||
/// Total bytes downloaded so far.
|
||||
final int downloaded;
|
||||
|
||||
/// Total bytes to download.
|
||||
final int total;
|
||||
|
||||
/// Estimated time of arrival (ETA) for the download to complete.
|
||||
final Duration eta;
|
||||
|
||||
const DownloadProgress({
|
||||
required this.speed,
|
||||
required this.downloaded,
|
||||
required this.total,
|
||||
required this.eta,
|
||||
});
|
||||
|
||||
const DownloadProgress.initial()
|
||||
: speed = 0,
|
||||
downloaded = 0,
|
||||
total = 0,
|
||||
eta = Duration.zero;
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
/// Represents a request to download an object from a storage bucket.
|
||||
class DownloadRequest {
|
||||
/// Local file path to save the downloaded object
|
||||
final String destinationPath;
|
||||
|
||||
const DownloadRequest({required this.destinationPath});
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
/// Represents the result of a download operation.
|
||||
class DownloadResult {
|
||||
/// Local file path where the downloaded object is stored.
|
||||
final String path;
|
||||
|
||||
/// Number of bytes downloaded.
|
||||
final int bytes;
|
||||
|
||||
/// Entity tag (ETag) of the downloaded object.
|
||||
final String eTag;
|
||||
|
||||
const DownloadResult({
|
||||
required this.path,
|
||||
required this.bytes,
|
||||
required this.eTag,
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
/// Represents metadata for a remote object in a storage bucket.
|
||||
class RemoteObjectMeta {
|
||||
/// Size of the object in bytes.
|
||||
final int size;
|
||||
|
||||
/// Entity tag (ETag) of the object.
|
||||
final String eTag;
|
||||
|
||||
const RemoteObjectMeta({required this.size, required this.eTag});
|
||||
}
|
||||
Reference in New Issue
Block a user