-
philenius authored
According to the S3 documentation, when adding user-defined object metadata, the metadata key must start with "x-amz-meta-" (all lowercase).
9b0ebfdf
minio_helpers.dart 5.83 KiB
import 'package:http/http.dart';
import 'package:mime/mime.dart' show lookupMimeType;
import 'package:minio/src/minio_errors.dart';
import 'package:minio/src/minio_models_generated.dart';
import 'package:xml/xml.dart' as xml;
bool isValidBucketName(String bucket) {
if (bucket == null) return false;
if (bucket.length < 3 || bucket.length > 63) {
return false;
}
if (bucket.contains('..')) {
return false;
}
if (RegExp(r'[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+').hasMatch(bucket)) {
return false;
}
if (RegExp(r'^[a-z0-9][a-z0-9.-]+[a-z0-9]$').hasMatch(bucket)) {
return true;
}
return false;
}
bool isValidObjectName(objectName) {
if (!isValidPrefix(objectName)) return false;
if (objectName.isEmpty) return false;
return true;
}
bool isValidPrefix(String prefix) {
if (prefix == null) return false;
if (prefix.length > 1024) return false;
return true;
}
bool isAmazonEndpoint(String endpoint) {
return endpoint == 's3.amazonaws.com' ||
endpoint == 's3.cn-north-1.amazonaws.com.cn';
}
bool isVirtualHostStyle(String endpoint, bool useSSL, String bucket) {
if (bucket == null) {
return false;
}
if (useSSL && bucket.contains('.')) {
return false;
}
return isAmazonEndpoint(endpoint);
}
bool isValidEndpoint(endpoint) {
return isValidDomain(endpoint) || isValidIPv4(endpoint);
}
bool isValidIPv4(String ip) {
if (ip == null) return false;
return RegExp(r'^(\d{1,3}\.){3,3}\d{1,3}$').hasMatch(ip);
}
bool isValidDomain(String host) {
if (host == null) return false;
if (host.isEmpty || host.length > 255) {
return false;