6 个版本
新版本 0.1.5 | 2024 年 8 月 21 日 |
---|---|
0.1.4 | 2024 年 5 月 13 日 |
0.1.3 | 2024 年 4 月 5 日 |
#422 in 开发工具
每月 89 次下载
用于 waifu-vault-client
50KB
667 行
Waifu Vault SDK
这是与 Waifu Vault API 交互的官方 API 绑定。
有关服务条款和使用政策的更多信息,请参阅上述网站。
安装
cargo add waifuvault
用法
以下交互是被允许的
上传文件
在创建 WaifuUploadRequest
时可以设置以下选项
file
: 可选值,用于从磁盘上传文件url
: 可选值,用于从 URL 上传内容bytes
: 可选值,用于上传原始字节bucket
: 可选值,用于将文件上传到特定存储桶expires
: 可选值,用于定义内容的过期时间- 有效值:
m
、h
、d
- 如果未设置,则内容将根据服务的保留策略存在
- 有效值:
hide_filename
: 可选标志,用于在生成的 URL 中隐藏文件名password
: 可选值,用于设置内容是否加密one_time_download
: 可选标志,用于设置内容在第一次访问后是否被删除
use waifuvault::{
ApiCaller,
api::{WaifuUploadRequest, WaifuResponse}
};
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let caller = ApiCaller::new();
// Upload a file from disk
let request = WaifuUploadRequest::new()
.file("/some/file/path") // Path to a file
.password("set a password") // Set a password
.one_time_download(true); // Delete after first access
let response = caller.upload_file(request).await?;
// Upload a file from a URL
let request = WaifuUploadRequest::new()
.url("https://some-website/image.jpg"); // URL to content
let response = caller.upload_file(request).await?;
// Upload a file from raw bytes
let data = std::fs::read("some/file/path")?;
let request = WaifuUploadRequest::new()
.bytes(data, "name-to-store.rs"); // Raw file content and name to store on the vault
let response = caller.upload_file(request).await?;
Ok(())
}
获取文件信息
检索使用 API 存储的文件信息
这需要从上传文件时的响应中获得的令牌。
在使用 WaifuGetRequest
时可以设置以下参数
token
: 用于检索文件的令牌formatted
:确定过期时间是否为可读的选项标志
use waifuvault::{
ApiCaller,
api::WaifuGetRequest
};
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let caller = ApiCaller::new();
let request = WaifuGetRequest::new("some-waifu-vault-token");
let response = caller.file_info(request).await?;
Ok(())
}
修改文件选项
修改API中存储文件的选项
以下参数可用于更新文件信息
password
:为文件设置新密码- 如果已存在密码,则必须使用
previous_password
- 如果已存在密码,则必须使用
previous_password
:文件的旧密码(设置加密内容的密码时需要)custom_expiry
:为内容设置新的过期时间hide_filename
:设置标志以从URL中隐藏文件名
use waifuvault::{
ApiCaller,
api::WaifuModificationRequest
};
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let caller = ApiCaller::new();
let request = WaifuModificationRequest::new("some-waifu-vault-token")
.password("new_password") // Set a new password
.previous_password("old_password") // Old password
.custom_expiry("1h") // Set a new expiry
.hide_filename(true); // Hide the filename
let response = caller.update_file(request).await?;
// Do something with the response
Ok(())
}
删除文件
使用API通过内容令牌删除文件。
use waifuvault::ApiCaller;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let caller = ApiCaller::new();
let response = caller.delete_file("some-waifu-token").await?;
Ok(())
}
下载文件
使用给定令牌从API下载文件。
use waifuvault::ApiCaller;
use std::io::Write;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let caller = ApiCaller::new();
// Download a file with no password
let content = caller.download_file("https://waifuvault.moe/f/some-file.ext", None).await?;
let mut f = std::fs::File::create("downloaded_file.txt")?;
f.write_all(&content)?;
// Download a file with no password
let content = caller.download_file("https://waifuvault.moe/f/some-other-file.ext", Some("password".to_string())).await?;
let mut f = std::fs::File::create("downloaded_file2.txt")?;
f.write_all(&content)?;
Ok(())
}
创建存储桶
使用API创建一个新存储桶以上传文件。
use waifuvault::{ApiCaller, api::WaifuUploadRequest};
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let caller = ApiCaller::new();
// Create a new bucket to upload files to
let bucket = caller.create_bucket().await?;
// You can now use the bucket token to upload files to the bucket
let request = WaifuUploadRequest::new()
.file("/some/file/path")
.bucket(&bucket.token)
.password("set a password")
.one_time_download(true);
let response = caller.upload_file(request).await?;
// Do something with the response
Ok(())
}
删除存储桶
删除存储桶及其包含的所有文件。
以下参数是必需的
token
:要删除的存储桶的令牌
use waifuvault::ApiCaller;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let caller = ApiCaller::new();
let token = "some-bucket-token";
// Delete the bucket and all files within
caller.delete_bucket(token).await?;
Ok(())
}
获取存储桶信息
检索存储桶中文件的信息。
以下参数是必需的
token
:要检查的存储桶的令牌
use waifuvault::ApiCaller;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let caller = ApiCaller::new();
let token = "some-bucket-token";
// Get bucket information
let info = caller.get_bucket(token).await?;
// You can now get access to the file information for files inside the bucket
for file in info.files.iter() {
// Do something with the file information
}
Ok(())
}
依赖项
~6–19MB
~284K SLoC