Skip to content
/ mega-rs Public

An API client library for interacting with MEGA from Rust

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

Hirevo/mega-rs

Repository files navigation

mega-rs

An API client library for interacting with MEGA

About

This is an (unofficial) API client library for interacting with MEGA's API using Rust.

This library aims to implement most (if not all) interactions with MEGA's API in pure Rust.

This allows Rust applications to access MEGA without needing to depend on the MEGAcmd command-line tool being installed on the host system.

It can also allow for more fine-grained control over how the operations are carried-out, like downloading nodes concurrently.

Features

All features marked as not yet implemented are ideas of things that could be done, and not necessarily an indication of it currently being worked on.

These are also non-exhaustive, so if there is a feature that you'd like to see done, feel free to open an issue to show your interest in it, regardless of whether it is mentionned in this list or not.

If you wish to contribute to this project, feel free to use this list to see if there is something you would be interested to either work on, or simply sharing some of your knowledge on how it could be achieved.

  • Login with MEGA
    • MFA support
    • Session resumption (deserialization)
    • Session serialization
  • Get storage quotas
  • Listing nodes
  • Downloading nodes
  • Uploading nodes
  • Creating folders
  • Renaming, moving and deleting nodes
  • Timeout support
  • Retries (exponential-backoff) support
  • Downloading thumbnails and preview images
  • Uploading thumbnails and preview images
  • Listing and downloading from public shared links
  • Listing and downloading from password-protected shared links
  • Creating public shared links to owned nodes
  • Creating password-protected shared links to owned nodes
  • Support for privately-shared nodes (direct shares between MEGA contacts)
  • Server-to-Client events support

Examples

You can see examples of how to use this library by looking at the different examples available.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.