Skip to content

Commit

Permalink
Fix lint issues from mgenware_dart_lints v4
Browse files Browse the repository at this point in the history
  • Loading branch information
mgenware committed May 18, 2023
1 parent 352c683 commit f8ba1d2
Show file tree
Hide file tree
Showing 17 changed files with 87 additions and 87 deletions.
2 changes: 1 addition & 1 deletion example/example.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'package:buxing/buxing.dart';

void main() async {
var task = Task(Uri.parse('https://golang.org/dl/go1.17.3.src.tar.gz'),
final task = Task(Uri.parse('https://golang.org/dl/go1.17.3.src.tar.gz'),
'downloads/go1.17.3.src.tar.gz',
worker: ParallelWorker(), logger: Logger());
await task.start();
Expand Down
24 changes: 12 additions & 12 deletions lib/src/dumper.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'dart:io';
import 'dart:typed_data';

import 'package:buxing/buxing.dart';
import '../buxing.dart';

/// File extension of a partially downloaded file.
const dataExt = '.bxdown';
Expand Down Expand Up @@ -46,7 +46,7 @@ class Dumper {

static Future<Dumper> _newDumper(String path, State initialState,
File dataFile, File stateFile, Logger? logger) async {
var d = Dumper._(path, initialState, dataFile, stateFile, logger);
final d = Dumper._(path, initialState, dataFile, stateFile, logger);
await d._prepare();
return d;
}
Expand Down Expand Up @@ -103,17 +103,17 @@ class Dumper {
}

Future<void> _prepare() async {
var raf = await dataFile.open(mode: FileMode.append);
final raf = await dataFile.open(mode: FileMode.append);
_poz = await raf.length();
_dataRAF = raf;
}

/// Creates a dumper and overwrites the existing one.
static Future<Dumper> create(String dest, StateHead head,
[Logger? logger]) async {
var state = State(head);
var stateFile = getStateFile(dest);
var dataFile = getDataFile(dest);
final state = State(head);
final stateFile = getStateFile(dest);
final dataFile = getDataFile(dest);

await dataFile.create(recursive: true);
if (head.size >= 0) {
Expand All @@ -122,7 +122,7 @@ class Dumper {

await stateFile.create(recursive: true);

var d = await Dumper._newDumper(dest, state, dataFile, stateFile, logger);
final d = await Dumper._newDumper(dest, state, dataFile, stateFile, logger);
await d.writeState(state);
return d;
}
Expand All @@ -131,17 +131,17 @@ class Dumper {
static Future<Dumper?> load(String dest, StateHead head,
[Logger? logger]) async {
try {
var stateFile = getStateFile(dest);
var dataFile = getDataFile(dest);
final stateFile = getStateFile(dest);
final dataFile = getDataFile(dest);
if (await stateFile.exists() && await dataFile.exists()) {
var localState = State.fromJSON(await stateFile.readAsString());
final localState = State.fromJSON(await stateFile.readAsString());
// Check if two states have the same head.
if (identical(localState.head, head)) {
throw Exception('Online state has changed');
}

// Make sure data file size is less than state file size.
var fileSize = await dataFile.length();
final fileSize = await dataFile.length();
if (head.size >= 0 && fileSize > head.size) {
throw Exception(
'Local data size is greater than remote file size, $fileSize != ${head.size}');
Expand All @@ -161,7 +161,7 @@ class Dumper {
/// Loads a dumper at the given path or creates one if it doesn't exist.
static Future<Dumper> loadOrCreate(String dest, StateHead head,
[Logger? logger]) async {
var state = await load(dest, head, logger);
final state = await load(dest, head, logger);
if (state != null) {
logger?.info('dumper: State loaded');
return state;
Expand Down
12 changes: 6 additions & 6 deletions lib/src/state.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'dart:convert';

import 'package:buxing/src/data.dart';
import 'data.dart';

// Constants used in JSON serialization / deserialization.
const urlKey = 'url';
Expand Down Expand Up @@ -80,7 +80,7 @@ class State {
/// Serializes a state to a JSON string.
String toJSON() {
// ignore: implicit_dynamic_map_literal
Map<String, dynamic> dict = {
final Map<String, dynamic> dict = {
urlKey: head.url.toString(),
originalURLKey: head.originalURL.toString(),
sizeKey: head.size,
Expand All @@ -99,16 +99,16 @@ class State {
static State fromJSON(String json) {
// Any errors thrown here are expected and should be handled
// as data corruption.
var map = jsonDecode(json) as Map<String, dynamic>;
var state = State(StateHead(Uri.parse(map[originalURLKey] as String),
final map = jsonDecode(json) as Map<String, dynamic>;
final state = State(StateHead(Uri.parse(map[originalURLKey] as String),
Uri.parse(map[urlKey] as String), map[sizeKey] as int));
state.transferred = map[transferredKey] as int;
state.parallel = (map[parallelKey] ?? false) as bool;
// ignore: implicit_dynamic_map_literal
var connsMap = map[connKey] as Map<String, dynamic>?;
final connsMap = map[connKey] as Map<String, dynamic>?;
if (connsMap != null) {
for (var connDict in connsMap.values) {
var connState = ConnState.fromJson(connDict as Map<String, dynamic>);
final connState = ConnState.fromJson(connDict as Map<String, dynamic>);
state.conns[connState.id] = connState;
}
}
Expand Down
18 changes: 9 additions & 9 deletions lib/src/task.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import 'package:buxing/buxing.dart';
import '../buxing.dart';

/// Represents a progress update of a task.
class TaskProgress {
Expand All @@ -22,10 +22,10 @@ class Task {
late final Logger? logger;

/// Called when a progress update is available.
Function(TaskProgress)? onProgress;
void Function(TaskProgress)? onProgress;

/// Called when the download is about to start.
Function(State, int)? onBeforeDownload;
void Function(State, int)? onBeforeDownload;

/// Gets the status of this task.
TaskStatus get status => _status;
Expand Down Expand Up @@ -54,11 +54,11 @@ class Task {
try {
_setStatus(TaskStatus.working);
logger?.info('task: Starting connection...');
var head = await _worker.connect(originalURL);
final head = await _worker.connect(originalURL);
logger?.info('task: Remote head: ${head.url}:${head.size}');

// Setup dumper.
var dumper = await Dumper.loadOrCreate(destFile, head, logger);
final dumper = await Dumper.loadOrCreate(destFile, head, logger);
_dumper = dumper;
logger?.info(
'task: Dumper created with state:\n${dumper.currentState.toJSON()}\n');
Expand All @@ -74,7 +74,7 @@ class Task {
await _resetData(state, dumper);
}

var canResume = await _worker.canResume(head);
final canResume = await _worker.canResume(head);
logger?.info('task: Can resume? $canResume');
if (canResume) {
// Set dumper position to last downloaded position.
Expand All @@ -89,7 +89,7 @@ class Task {
}

logger?.info('task: Preparing...');
var stateToBeUpdated = await _worker.prepare(state);
final stateToBeUpdated = await _worker.prepare(state);
if (stateToBeUpdated != null) {
logger?.info(
'task: [prepare] returned state ${stateToBeUpdated.toJSON()}');
Expand All @@ -99,12 +99,12 @@ class Task {

onBeforeDownload?.call(dumper.currentState, dumper.position);
logger?.info('task: Downloading...');
var dataStream = await _worker.start(state);
final dataStream = await _worker.start(state);

await for (var body in dataStream) {
logger?.verbose(
'task: Body received: ${body.data.length}, poz: ${body.position}');
var poz = body.position;
final poz = body.position;
if (poz != null) {
logger?.verbose('task: Seek: $poz');
await dumper.seek(poz);
Expand Down
2 changes: 1 addition & 1 deletion lib/src/worker_base.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'dart:async';

import 'package:buxing/buxing.dart';
import '../buxing.dart';

/// Base class for all workers.
abstract class WorkerBase {
Expand Down
6 changes: 3 additions & 3 deletions lib/src/workers/conn.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'package:buxing/buxing.dart';
import 'package:buxing/src/workers/http_client_wrapper.dart';
import '../../buxing.dart';
import 'http_client_wrapper.dart';

/// The default [ConnBase] implementation.
class Conn extends ConnBase {
Expand All @@ -15,7 +15,7 @@ class Conn extends ConnBase {

@override
Future<Stream<List<int>>> startCore() async {
var resp = await _conn.get(head.url, range: initialState.range);
final resp = await _conn.get(head.url, range: initialState.range);
return resp.stream;
}
}
12 changes: 6 additions & 6 deletions lib/src/workers/conn_base.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import 'package:buxing/buxing.dart';
import '../../buxing.dart';
import 'package:meta/meta.dart';
import 'package:buffered_list_stream/buffered_list_stream.dart';

Expand All @@ -14,7 +14,7 @@ abstract class ConnBase {
final int bufferSize;

/// Fires when connection state updates.
Function(ConnState?)? onStateChange;
void Function(ConnState?)? onStateChange;

int _transferred = 0;

Expand All @@ -28,10 +28,10 @@ abstract class ConnBase {

/// Starts transmission from server.
Future<Stream<DataBody>> start() async {
var bufferedStream = bufferedListStream(await startCore(), bufferSize);
final bufferedStream = bufferedListStream(await startCore(), bufferSize);
return bufferedStream.map((bytes) {
var body = _createDataBody(bytes);
var newState = initialState.start + _transferred > initialState.end
final body = _createDataBody(bytes);
final newState = initialState.start + _transferred > initialState.end
? null
: ConnState(initialState.id, initialState.start + _transferred,
initialState.end);
Expand All @@ -41,7 +41,7 @@ abstract class ConnBase {
}

DataBody _createDataBody(List<int> bytes) {
var body = DataBody(bytes, position: initialState.start + _transferred);
final body = DataBody(bytes, position: initialState.start + _transferred);
_transferred += bytes.length;
return body;
}
Expand Down
10 changes: 5 additions & 5 deletions lib/src/workers/http_client_wrapper.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import 'package:buxing/src/data.dart';
import '../data.dart';
import 'package:http/http.dart' as http;
import 'package:http/retry.dart';

Expand All @@ -11,18 +11,18 @@ class HTTPClientWrapper {

/// Sends a HEAD request.
Future<http.Response> head(Uri url, {Map<String, String>? headers}) async {
var resp = await _client.head(url, headers: headers);
final resp = await _client.head(url, headers: headers);
_throwOnErrorHTTPCode(resp.statusCode);
return resp;
}

/// Sends a GET request.
Future<http.StreamedResponse> get(Uri url, {DataRange? range}) async {
var req = http.Request('GET', url);
final req = http.Request('GET', url);
if (range != null) {
req.headers['Range'] = 'bytes=${range.start}-${range.end}';
}
var resp = await _client.send(req);
final resp = await _client.send(req);
_throwOnErrorHTTPCode(resp.statusCode);
if (range != null && resp.statusCode != rangeStatus) {
throw Exception(
Expand All @@ -33,7 +33,7 @@ class HTTPClientWrapper {

/// Sends a HEAD request with a RANGE header.
Future<bool> canResume(Uri url) async {
var resp = await head(url, headers: {'Range': 'bytes=0-'});
final resp = await head(url, headers: {'Range': 'bytes=0-'});
return resp.statusCode == rangeStatus;
}

Expand Down
14 changes: 7 additions & 7 deletions lib/src/workers/parallel_worker.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'dart:math';
import 'dart:io';

import 'package:buxing/buxing.dart';
import '../../buxing.dart';
import 'package:meta/meta.dart';
import 'package:async/async.dart';

Expand All @@ -26,7 +26,7 @@ class ParallelWorker extends Worker {
Future<State> prepare(State state) async {
logger?.info('p_worker: Sending head request...');
if (state.conns.isEmpty) {
var connStates = _createConnStates(state);
final connStates = _createConnStates(state);
logger?.info('p_worker: Created ${connStates.length} state conns...');
state.conns = connStates;
}
Expand All @@ -39,9 +39,9 @@ class ParallelWorker extends Worker {
logger?.info('p_worker: Got ${state.conns.length} state conns...');

for (var connState in state.conns.values) {
var conn = spawnConn(state.head, connState);
final conn = spawnConn(state.head, connState);
conn.onStateChange = (s) async {
var id = conn.id;
final id = conn.id;
if (s == null) {
await conn.close();
state.conns.remove(id);
Expand All @@ -52,15 +52,15 @@ class ParallelWorker extends Worker {
};
_conns[conn.id] = conn;
}
var streams = await Future.wait(_conns.values.map((e) => e.start()));
final streams = await Future.wait(_conns.values.map((e) => e.start()));
return StreamGroup.merge(streams);
}

Map<String, ConnState> _createConnStates(State state) {
var avgSize = (state.head.size / concurrency).round();
final avgSize = (state.head.size / concurrency).round();
ConnState? prevState;
ConnState? curState;
Map<String, ConnState> conns = {};
final Map<String, ConnState> conns = {};
for (var i = 0; i < concurrency; i++) {
curState = ConnState(
nextConnID(),
Expand Down
14 changes: 7 additions & 7 deletions lib/src/workers/worker.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'dart:async';
import 'package:http/http.dart' as http;

import 'package:buxing/buxing.dart';
import '../../buxing.dart';
import 'package:buffered_list_stream/buffered_list_stream.dart';
import 'http_client_wrapper.dart';

Expand All @@ -17,23 +17,23 @@ class Worker extends WorkerBase {
@override
Future<StateHead> connect(Uri url) async {
logger?.info('worker: Sending head request...');
var headResp = await _conn.head(url);
final headResp = await _conn.head(url);
_logResponse(headResp);

// Fetch content size.
var contentLength = headResp.headers['content-length'];
var size = int.tryParse(contentLength ?? '') ?? -1;
final contentLength = headResp.headers['content-length'];
final size = int.tryParse(contentLength ?? '') ?? -1;
return StateHead(url, url, size);
}

@override
Future<Stream<DataBody>> start(State state) async {
logger?.info('worker: Sending data request...');
DataRange? range = state.transferred > 0
final DataRange? range = state.transferred > 0
? DataRange(state.transferred, state.head.size - 1)
: null;
var resp = await _conn.get(state.head.url, range: range);
var bufferedStream = bufferedListStream(resp.stream, bufferSize);
final resp = await _conn.get(state.head.url, range: range);
final bufferedStream = bufferedListStream(resp.stream, bufferSize);
return bufferedStream.map((s) => DataBody(s));
}

Expand Down
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ dev_dependencies:
lints: ^2.0.0
path: ^1.8.0
crypto: ^3.0.1
mgenware_dart_lints: ^2.1.0
mgenware_dart_lints: ^4.0.0
dependencies:
http: ^0.13.4
meta: ^1.7.0
Expand Down
Loading

0 comments on commit f8ba1d2

Please sign in to comment.