Skip to content

Commit

Permalink
Fixes all lint warnings.
Browse files Browse the repository at this point in the history
  • Loading branch information
lijy91 committed Sep 13, 2024
1 parent 0b283c6 commit 185b122
Show file tree
Hide file tree
Showing 20 changed files with 175 additions and 110 deletions.
4 changes: 4 additions & 0 deletions analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
include: package:mostly_reasonable_lints/analysis_options.yaml
analyzer:
errors:
avoid_print: ignore
prefer_const_declarations: ignore
17 changes: 12 additions & 5 deletions example/minio_example.dart
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,12 @@ void main() async {
print('bucket $bucket already exists');
}

final poller = minio.listenBucketNotification(bucket, events: [
's3:ObjectCreated:*',
]);
final poller = minio.listenBucketNotification(
bucket,
events: [
's3:ObjectCreated:*',
],
);
poller.stream.listen((event) {
print('--- event: ${event['eventName']}');
});
Expand Down Expand Up @@ -53,12 +56,16 @@ void main() async {

await minio.listObjects(bucket).forEach((chunk) {
print('--- objects:');
chunk.objects.forEach((o) => print(o.key));
for (var o in chunk.objects) {
print(o.key);
}
});

await minio.listObjectsV2(bucket).forEach((chunk) {
print('--- objects(v2):');
chunk.objects.forEach((o) => print(o.key));
for (var o in chunk.objects) {
print(o.key);
}
});

final stat = await minio.statObject(bucket, object);
Expand Down
4 changes: 2 additions & 2 deletions lib/io.dart
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,9 @@ extension MinioX on Minio {
IOSink partFileStream;
var offset = 0;

final rename = () {
void rename() {
partFile.rename(filePath);
};
}

if (await partFile.exists()) {
final localStat = await partFile.stat();
Expand Down
2 changes: 1 addition & 1 deletion lib/models.dart
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
export 'src/minio_models_generated.dart';
export 'src/minio_models.dart';
export 'src/minio_models_generated.dart';
27 changes: 18 additions & 9 deletions lib/src/minio.dart
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
// ignore_for_file: deprecated_member_use

import 'dart:async';
import 'dart:convert';
import 'dart:typed_data';

import 'package:minio/models.dart';
import 'package:minio/src/minio_client.dart';
import 'package:minio/src/minio_errors.dart';
import 'package:minio/src/minio_helpers.dart';
import 'package:minio/src/minio_models.dart';
import 'package:minio/src/minio_models_generated.dart';
import 'package:minio/src/minio_poller.dart';
import 'package:minio/src/minio_sign.dart';
import 'package:minio/src/minio_stream.dart';
Expand All @@ -14,9 +17,6 @@ import 'package:minio/src/utils.dart';
import 'package:xml/xml.dart' as xml;
import 'package:xml/xml.dart' show XmlElement;

import '../models.dart';
import 'minio_helpers.dart';

class Minio {
/// Initializes a new client object.
Minio({
Expand Down Expand Up @@ -812,7 +812,7 @@ class Minio {
// 'expiration' is mandatory field for S3.
// Set default expiration date of 7 days.
var expires = DateTime.now().toUtc();
expires.add(Duration(days: 7));
expires.add(const Duration(days: 7));
postPolicy.setExpires(expires);
}

Expand All @@ -824,9 +824,10 @@ class Minio {
postPolicy.formData['x-amz-algorithm'] = 'AWS4-HMAC-SHA256';

postPolicy.policy['conditions'].push(
['eq', r'$x-amz-credential', accessKey + '/' + getScope(region, date)]);
['eq', r'$x-amz-credential', '$accessKey/${getScope(region, date)}'],
);
postPolicy.formData['x-amz-credential'] =
accessKey + '/' + getScope(region, date);
'$accessKey/${getScope(region, date)}';

if (sessionToken != null) {
postPolicy.policy['conditions']
Expand All @@ -841,8 +842,16 @@ class Minio {

postPolicy.formData['x-amz-signature'] = signature;
final url = _client
.getBaseRequest('POST', postPolicy.formData['bucket'], null, region,
null, null, null, null)
.getBaseRequest(
'POST',
postPolicy.formData['bucket'],
null,
region,
null,
null,
null,
null,
)
.url;
var portStr = (port == 80 || port == 443) ? '' : ':$port';
var urlStr = '${url.scheme}://${url.host}$portStr${url.path}';
Expand Down
57 changes: 35 additions & 22 deletions lib/src/minio_client.dart
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import 'package:minio/src/minio_sign.dart';
import 'package:minio/src/utils.dart';

class MinioRequest extends BaseRequest {
MinioRequest(String method, Uri url, {this.onProgress}) : super(method, url);
MinioRequest(super.method, super.url, {this.onProgress});

dynamic body;

Expand All @@ -29,7 +29,7 @@ class MinioRequest extends BaseRequest {
if (body is Stream<Uint8List>) {
stream = body;
} else if (body is String) {
final data = Utf8Encoder().convert(body);
final data = const Utf8Encoder().convert(body);
headers['content-length'] = data.length.toString();
stream = Stream<Uint8List>.value(data);
} else if (body is Uint8List) {
Expand Down Expand Up @@ -75,12 +75,6 @@ class MinioRequest extends BaseRequest {

/// An HTTP response where the entire response body is known in advance.
class MinioResponse extends BaseResponse {
/// The bytes comprising the body of this response.
final Uint8List bodyBytes;

/// Body of s3 response is always encoded as UTF-8.
String get body => utf8.decode(bodyBytes);

/// Create a new HTTP response with a byte array body.
MinioResponse.bytes(
this.bodyBytes,
Expand All @@ -90,22 +84,33 @@ class MinioResponse extends BaseResponse {
bool isRedirect = false,
bool persistentConnection = true,
String? reasonPhrase,
}) : super(statusCode,
contentLength: bodyBytes.length,
request: request,
headers: headers,
isRedirect: isRedirect,
persistentConnection: persistentConnection,
reasonPhrase: reasonPhrase);
}) : super(
statusCode,
contentLength: bodyBytes.length,
request: request,
headers: headers,
isRedirect: isRedirect,
persistentConnection: persistentConnection,
reasonPhrase: reasonPhrase,
);

/// The bytes comprising the body of this response.
final Uint8List bodyBytes;

/// Body of s3 response is always encoded as UTF-8.
String get body => utf8.decode(bodyBytes);

static Future<MinioResponse> fromStream(StreamedResponse response) async {
final body = await response.stream.toBytes();
return MinioResponse.bytes(body, response.statusCode,
request: response.request,
headers: response.headers,
isRedirect: response.isRedirect,
persistentConnection: response.persistentConnection,
reasonPhrase: response.reasonPhrase);
return MinioResponse.bytes(
body,
response.statusCode,
request: response.request,
headers: response.headers,
isRedirect: response.isRedirect,
persistentConnection: response.persistentConnection,
reasonPhrase: response.reasonPhrase,
);
}
}

Expand Down Expand Up @@ -141,7 +146,15 @@ class MinioClient {
region ??= 'us-east-1';

final request = getBaseRequest(
method, bucket, object, region, resource, queries, headers, onProgress);
method,
bucket,
object,
region,
resource,
queries,
headers,
onProgress,
);
request.body = payload;

final date = DateTime.now().toUtc();
Expand Down
30 changes: 15 additions & 15 deletions lib/src/minio_errors.dart
Original file line number Diff line number Diff line change
Expand Up @@ -14,23 +14,23 @@ class MinioError {
}

class MinioAnonymousRequestError extends MinioError {
MinioAnonymousRequestError(String message) : super(message);
MinioAnonymousRequestError(super.message);
}

class MinioInvalidArgumentError extends MinioError {
MinioInvalidArgumentError(String message) : super(message);
MinioInvalidArgumentError(super.message);
}

class MinioInvalidPortError extends MinioError {
MinioInvalidPortError(String message) : super(message);
MinioInvalidPortError(super.message);
}

class MinioInvalidEndpointError extends MinioError {
MinioInvalidEndpointError(String message) : super(message);
MinioInvalidEndpointError(super.message);
}

class MinioInvalidBucketNameError extends MinioError {
MinioInvalidBucketNameError(String message) : super(message);
MinioInvalidBucketNameError(super.message);

static void check(String bucket) {
if (isValidBucketName(bucket)) return;
Expand All @@ -39,7 +39,7 @@ class MinioInvalidBucketNameError extends MinioError {
}

class MinioInvalidObjectNameError extends MinioError {
MinioInvalidObjectNameError(String message) : super(message);
MinioInvalidObjectNameError(super.message);

static void check(String object) {
if (isValidObjectName(object)) return;
Expand All @@ -48,23 +48,23 @@ class MinioInvalidObjectNameError extends MinioError {
}

class MinioAccessKeyRequiredError extends MinioError {
MinioAccessKeyRequiredError(String message) : super(message);
MinioAccessKeyRequiredError(super.message);
}

class MinioSecretKeyRequiredError extends MinioError {
MinioSecretKeyRequiredError(String message) : super(message);
MinioSecretKeyRequiredError(super.message);
}

class MinioExpiresParamError extends MinioError {
MinioExpiresParamError(String message) : super(message);
MinioExpiresParamError(super.message);
}

class MinioInvalidDateError extends MinioError {
MinioInvalidDateError(String message) : super(message);
MinioInvalidDateError(super.message);
}

class MinioInvalidPrefixError extends MinioError {
MinioInvalidPrefixError(String message) : super(message);
MinioInvalidPrefixError(super.message);

static void check(String prefix) {
if (isValidPrefix(prefix)) return;
Expand All @@ -73,19 +73,19 @@ class MinioInvalidPrefixError extends MinioError {
}

class MinioInvalidBucketPolicyError extends MinioError {
MinioInvalidBucketPolicyError(String message) : super(message);
MinioInvalidBucketPolicyError(super.message);
}

class MinioIncorrectSizeError extends MinioError {
MinioIncorrectSizeError(String message) : super(message);
MinioIncorrectSizeError(super.message);
}

class MinioInvalidXMLError extends MinioError {
MinioInvalidXMLError(String message) : super(message);
MinioInvalidXMLError(super.message);
}

class MinioS3Error extends MinioError {
MinioS3Error(String? message, [this.error, this.response]) : super(message);
MinioS3Error(super.message, [this.error, this.response]);

Error? error;

Expand Down
31 changes: 19 additions & 12 deletions lib/src/minio_helpers.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
// ignore_for_file: non_constant_identifier_names

import 'package:convert/convert.dart';
import 'package:http/http.dart';
import 'package:mime/mime.dart' show lookupMimeType;
Expand Down Expand Up @@ -105,12 +107,11 @@ String makeDateLong(DateTime date) {
final isoDate = date.toIso8601String();

// 'YYYYMMDDTHHmmss' + Z
return isoDate.substring(0, 4) +
isoDate.substring(5, 7) +
isoDate.substring(8, 13) +
isoDate.substring(14, 16) +
isoDate.substring(17, 19) +
'Z';
return '${isoDate.substring(0, 4)}'
'${isoDate.substring(5, 7)}'
'${isoDate.substring(8, 13)}'
'${isoDate.substring(14, 16)}'
'${isoDate.substring(17, 19)}Z';
}

String makeDateShort(DateTime date) {
Expand All @@ -128,7 +129,7 @@ Map<String, String> prependXAMZMeta(Map<String, String?> metadata) {
if (!isAmzHeader(key) &&
!isSupportedHeader(key) &&
!isStorageclassHeader(key)) {
newMetadata['x-amz-meta-' + key] = newMetadata[key]!;
newMetadata['x-amz-meta-$key'] = newMetadata[key]!;
newMetadata.remove(key);
}
}
Expand All @@ -144,15 +145,15 @@ bool isAmzHeader(key) {
}

bool isSupportedHeader(key) {
var supported_headers = {
var supportedHeaders = {
'content-type',
'cache-control',
'content-encoding',
'content-disposition',
'content-language',
'x-amz-website-redirect-location',
};
return (supported_headers.contains(key.toLowerCase()));
return (supportedHeaders.contains(key.toLowerCase()));
}

bool isStorageclassHeader(key) {
Expand Down Expand Up @@ -209,13 +210,16 @@ Future<void> validateStreamed(
if (expect != null && streamedResponse.statusCode != expect) {
final response = await MinioResponse.fromStream(streamedResponse);
throw MinioS3Error(
'$expect expected, got ${streamedResponse.statusCode}', null, response);
'$expect expected, got ${streamedResponse.statusCode}',
null,
response,
);
}
}

void validate(MinioResponse response, {int? expect}) {
if (response.statusCode >= 400) {
var error;
dynamic error;

// Parse HTTP response body as XML only when not empty
if (response.body.isEmpty) {
Expand All @@ -230,7 +234,10 @@ void validate(MinioResponse response, {int? expect}) {

if (expect != null && response.statusCode != expect) {
throw MinioS3Error(
'$expect expected, got ${response.statusCode}', null, response);
'$expect expected, got ${response.statusCode}',
null,
response,
);
}
}

Expand Down
Loading

0 comments on commit 185b122

Please sign in to comment.