-
xuty authoredcbfda8fa
minio_client.dart 5.65 KiB
import 'dart:convert';
import 'package:http/http.dart';
import 'package:minio/minio.dart';
import 'package:minio/src/minio_helpers.dart';
import 'package:minio/src/minio_s3.dart';
import 'package:minio/src/minio_sign.dart';
import 'package:minio/src/utils.dart';
class MinioRequest extends BaseRequest {
MinioRequest(String method, Uri url) : super(method, url);
dynamic body;
@override
ByteStream finalize() {
super.finalize();
if (body is String) {
return ByteStream.fromBytes(utf8.encode(body));
}
if (body is List<int>) {
return ByteStream.fromBytes(body);
}
if (body is Stream<List<int>>) {
return ByteStream(body);
}
throw UnsupportedError('unsupported body type: ${body.runtimeType}');
}
MinioRequest replace({
String method,
Uri url,
Map<String, String> headers,
body,
}) {
final result = MinioRequest(method ?? this.method, url ?? this.url);
result.body = body ?? this.body;
result.headers.addAll(headers ?? this.headers);
return result;
}
}
class MinioClient {
MinioClient(this.minio) {
anonymous = minio.accessKey.isEmpty && minio.secretKey.isEmpty;
enableSHA256 = !anonymous && !minio.useSSL;
port = minio.port ?? implyPort(minio.useSSL);
}
final Minio minio;
final String userAgent = 'MinIO (Unknown; Unknown) minio-js/0.0.1';
bool enableSHA256;
bool anonymous;
int port;
Future<StreamedResponse> _request({
String method,
String bucket,
String object,
String region,
String resource,
dynamic payload = '',
Map<String, String> queries,
Map<String, String> headers,
}) async {
region ??= await minio.getBucketRegion(bucket);
final request = getBaseRequest(
method, bucket, object, region, resource, queries, headers);