shuttle-opendal 0.57.0

Plugin to obtain a client connected to Apache OpenDAL
Documentation
# Shuttle OpenDAL

This plugin allows services to connect to [Apache OpenDALâ„¢](https://github.com/apache/opendal). OpenDAL is a data access layer that allows users to easily and efficiently retrieve data from various storage services in a unified way.

Users can connect OpenDAL to access data from a variety of storage services, including: s3, azblob, gcs, oss and [so on](https://opendal.apache.org/docs/rust/opendal/services/index.html).

## Usage

**IMPORTANT**: Currently Shuttle isn't able to provision a storage for you (yet). This means you will have to create the storage service first and setup the secrets accordingly.

Add `shuttle-opendal` to the dependencies for your service by running `cargo add shuttle-opendal`.
This resource will be provided by adding the `shuttle_opendal::Opendal` attribute to your Shuttle `main` decorated function.

It returns a `opendal::Operator` for you to connect the storage service.

### Example

In the case of an Axum server, your main function will look like this:

```rust
use opendal::Operator;
use shuttle_axum::ShuttleAxum;

#[shuttle_runtime::main]
async fn app(
    #[shuttle_opendal::Opendal(scheme = "s3")]
    storage: Operator,
) -> ShuttleAxum {}
```

### Parameters

| Parameter | Type  | Default    | Description                                      |
|-----------|-------|------------|--------------------------------------------------|
| scheme    | `str` | `"memory"` | The scheme of the storage service to connect to. |

All secrets are loaded from your `Secrets.toml` file.

For instance, when using `s3`, you can configure the scheme to `s3` and specify the secrets: `bucket`, `access_key_id`, and `secret_access_key`.

Visit the [OpenDAL Documentation](https://opendal.apache.org/docs/rust/opendal/services/index.html) for more information on how to setup the secrets for the storage service you want to connect to.