Files
Genarrative/server-rs/crates/spacetime-client/src/external_api_key.rs
T
kdletters 95d6bc2ae7 接入外部 OpenAPI 与 API Key 管理
新增外部编辑器 OpenAPI 路由与 openapi.json 导出

新增账号级 API Key 表、鉴权、创建、列表和撤销链路

新增个人中心开发者 API Key 管理弹窗

补充前端契约、客户端方法、测试与项目文档
2026-06-19 15:31:53 +08:00

95 lines
3.4 KiB
Rust

use super::*;
impl SpacetimeClient {
pub async fn create_external_api_key(
&self,
input: ExternalApiKeyCreateRecordInput,
) -> Result<ExternalApiKeyRecord, SpacetimeClientError> {
let procedure_input = input.into();
self.call_after_connect(
"create_external_api_key_and_return",
move |connection, sender| {
connection
.procedures()
.create_external_api_key_and_return_then(procedure_input, move |_, result| {
let mapped = result
.map_err(SpacetimeClientError::from_sdk_error)
.and_then(map_external_api_key_single_procedure_result);
send_once(&sender, mapped);
});
},
)
.await
}
pub async fn list_external_api_keys(
&self,
owner_user_id: String,
) -> Result<Vec<ExternalApiKeyRecord>, SpacetimeClientError> {
let procedure_input = ExternalApiKeyListInput { owner_user_id };
self.call_after_connect(
"list_external_api_keys_and_return",
move |connection, sender| {
connection
.procedures()
.list_external_api_keys_and_return_then(procedure_input, move |_, result| {
let mapped = result
.map_err(SpacetimeClientError::from_sdk_error)
.and_then(map_external_api_key_list_procedure_result);
send_once(&sender, mapped);
});
},
)
.await
}
pub async fn revoke_external_api_key(
&self,
input: ExternalApiKeyRevokeRecordInput,
) -> Result<ExternalApiKeyRecord, SpacetimeClientError> {
let procedure_input = input.into();
self.call_after_connect(
"revoke_external_api_key_and_return",
move |connection, sender| {
connection
.procedures()
.revoke_external_api_key_and_return_then(procedure_input, move |_, result| {
let mapped = result
.map_err(SpacetimeClientError::from_sdk_error)
.and_then(map_external_api_key_single_procedure_result);
send_once(&sender, mapped);
});
},
)
.await
}
pub async fn authenticate_external_api_key(
&self,
input: ExternalApiKeyAuthenticateRecordInput,
) -> Result<ExternalApiKeyRecord, SpacetimeClientError> {
let procedure_input = input.into();
self.call_after_connect(
"authenticate_external_api_key_and_return",
move |connection, sender| {
connection
.procedures()
.authenticate_external_api_key_and_return_then(
procedure_input,
move |_, result| {
let mapped = result
.map_err(SpacetimeClientError::from_sdk_error)
.and_then(map_external_api_key_single_procedure_result);
send_once(&sender, mapped);
},
);
},
)
.await
}
}