dolinode_space

Client library to interact with the DigitalOcean & Linode Spaces API.


License
MIT

Documentation

Client library to interact with the DigitalOcean & Linode Spaces API.

Features

  • Upload files
  • Get list files from buckets

Usage

Setup space instance

/// Initialize space
DOLinodeSpaces spaces = DOLinodeSpaces(
    region: "ap-south-1",
    accessKey: "accessKey",
    secretKey: "secretKey",
    provider: Providers.linodeobject,
);

A simple usage to upload file to specific bucket

/// Uploading file to space and
/// get direct link to file
Future<String> uploadFile(File file) async {
    String bucket = "example"
    String filename = file.path.split('/').last.split(".").first;
    /// Encrypting filename using base64
    /// and use the value as the key in spaces
    String fileKey = "images/${base64.encode(utf8.encode(filename))}${path.extension(file.path)}";

    String? eTag = await spaces?.bucket(bucket)
        .uploadFile(fileKey, file, "image/jpeg", Permissions.public);
    List<BucketContentModel> contents =
        await spaces!.bucket(bucket).listContents();
    return contents.firstWhere((item) => item.eTag == eTag).url ?? "";
}

final url = await uploadFile(File("/images/image-example.jpg"));
debugPrint("Uploaded url: $url");

A simple usage to get list files from bucket

/// Get list file from specific bucket
Future<List<BucketContentModel>> listFile() async {
    String bucket = "example"
    return await spaces!.bucket(bucket).listContents();
}

/// Get list file from specific bucket
List<BucketContentModel> contents = await listFile();
for (var content in contents) {
    debugPrint("- ${content.url}");
}

Additional information