Skip to content
Snippets Groups Projects
minio.dart 31.69 KiB
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_poller.dart';
import 'package:minio/src/minio_sign.dart';
import 'package:minio/src/minio_stream.dart';
import 'package:minio/src/minio_uploader.dart';
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({
    required this.endPoint,
    required this.accessKey,
    required this.secretKey,
    int? port,
    this.useSSL = true,
    this.sessionToken,
    this.region,
    this.enableTrace = false,
  }) : port = port ?? implyPort(useSSL) {
    if (!isValidEndpoint(endPoint)) {
      throw MinioInvalidEndpointError(
        'End point $endPoint is not a valid domain or ip address',
      );
    }

    if (!isValidPort(this.port)) {
      throw MinioInvalidPortError(
        'Invalid port number ${this.port}',
      );
    }

    _client = MinioClient(this);
  }

  /// default part size for multipart uploads.
  final partSize = 64 * 1024 * 1024;

  /// maximum part size for multipart uploads.
  final maximumPartSize = 5 * 1024 * 1024 * 1024;

  /// maximum object size (5TB)
  final maxObjectSize = 5 * 1024 * 1024 * 1024 * 1024;

  /// endPoint is a host name or an IP address.
  ///
  /// For example:
  /// - play.min.io
  /// - 1.2.3.4
  final String endPoint;

  /// TCP/IP port number. This input is optional. Default value set to 80 for HTTP and 443 for HTTPs.
  final int port;

  /// If set to true, https is used instead of http. Default is true.
  final bool useSSL;

  /// accessKey is like user-id that uniquely identifies your account.
  final String accessKey;