3个不稳定版本
0.2.0 | 2023年12月10日 |
---|---|
0.1.1 | 2023年8月4日 |
0.1.0 | 2023年8月4日 |
#299 在 配置
每月51次下载
79KB
1K SLoC
Supabase存储客户端
这是一个用于与Supabase存储交互的Rust客户端库,允许您执行上传、下载和管理Supabase存储桶中的文件等操作。
入门
要使用Supabase存储Rust客户端,您需要首先使用您的Supabase配置创建一个Storage
实例。在使用客户端库之前,请确保设置所需的环境变量。您可以使用dotenv
从.env
文件加载环境变量。
SupabaseConfig假定存在变量SUPABASE_URL_STORAGE和SUPABASE_API_KEY,以确保授权头和基本URL得到适当配置。
use supabase_storage::Storage;
use supabase_storage::config::SupabaseConfig;
use dotenv::dotenv;
#[tokio::main]
async fn main() {
dotenv().ok();
let config = SupabaseConfig::default();
let storage = Storage::new_with_config(config);
// Now you can use the `storage` instance to interact with Supabase Storage.
}
使用SupabaseConfig结构不是强制性的。作为替代方案,您可以手动加载存储URL和API密钥值。
use reqwest::header::HeaderValue;
use supabase_storage::Storage;
use serde::Deserialize;
#[tokio::main]
async fn main() {
let url = "<base storage url>";
let api_key = "<api key>";
let storage = Storage::new(url);
let bucket_name = "thefux";
let response = storage
.from()
.header("Authorization", HeaderValue::from_str(&format!("Bearer {}", api_key)).unwrap())
.get_bucket_details(bucket_name)
.execute()
.await
.unwrap();
println!("{:?}", response);
// Handle the response as needed.
}
获取文件
要从Supabase存储获取文件,您可以使用get_object
方法。
use supabase_storage::Storage;
use supabase_storage::config::SupabaseConfig;
use dotenv::dotenv;
#[tokio::main]
async fn main() {
dotenv().ok();
let config = SupabaseConfig::default();
let storage = Storage::new_with_config(config);
let bucket_name = "thefux";
let object = "test/bitcoin.pdf";
let response = storage
.from()
.get_object(bucket_name, object)
.execute()
.await
.unwrap();
// Handle the response as needed.
}
更新对象
您还可以使用update_object
方法在桶中更新对象。目前更新方法仅为异步。
use supabase_storage::Storage;
use supabase_storage::config::SupabaseConfig;
use dotenv::dotenv;
#[tokio::main]
async fn main() {
dotenv().ok();
let config = SupabaseConfig::default();
let storage = Storage::new_with_config(config);
let bucket_name = "thefux";
let object = "btc.pdf";
let file_path = "/user/test.pdf";
let response = storage
.from()
.update_object_async(bucket_name, object, file_path)
.await
.execute()
.await
.unwrap()
.text()
.await
.unwrap();
println!("{:?}", response);
// Handle the response as needed.
}
对于喜欢使用对象而不是使用execute函数的人来说,可以使用execute_from函数,以便随后解析响应。
use dotenv::dotenv;
use supabase_storage::Storage;
use supabase_storage::config::SupabaseConfig;
use serde::Deserialize;
#[derive(Debug, Deserialize)]
pub struct Response {
pub message: String,
}
#[tokio::main]
async fn main() {
dotenv().ok();
let config = SupabaseConfig::default();
let storage = Storage::new_with_config(config);
let bucket_name = "thefux";
let object = "btc.pdf";
let response = storage
.from()
.delete_object(bucket_name, object)
.execute_from::<Response>()
.await
.unwrap();
println!("{:?}", response);
// Handle the response as needed.
}
贡献
呼唤所有聪明才智和热情的开发者!🚀 欢迎加入并在这个项目中做出贡献!
许可
此库根据MIT许可协议授权。有关详细信息,请参阅LICENSE文件。
请根据您的特定用例和需求,在此readme中添加更多示例和文档。
依赖关系
~6–20MB
~294K SLoC