use openlark_core::{
api::{ApiRequest, ApiResponseTrait, ResponseFormat},
config::Config,
http::Transport,
validate_required, SDKResult,
};
use crate::common::{api_endpoints::PermissionApiOld, api_utils::*};
pub mod models;
impl ApiResponseTrait for CheckMemberPermissionResponse {
fn data_format() -> ResponseFormat {
ResponseFormat::Data
}
}
impl ApiResponseTrait for TransferOwnerResponse {
fn data_format() -> ResponseFormat {
ResponseFormat::Data
}
}
impl ApiResponseTrait for GetPublicPermissionResponse {
fn data_format() -> ResponseFormat {
ResponseFormat::Data
}
}
pub async fn check_member_permission(
config: &Config,
params: CheckMemberPermissionParams,
) -> SDKResult<CheckMemberPermissionResponse> {
validate_required!(params.obj_token.trim(), "文件Token不能为空");
validate_required!(params.permission, "权限类型不能为空");
let api_endpoint = PermissionApiOld::MemberPermitted;
let api_request: ApiRequest<CheckMemberPermissionResponse> =
ApiRequest::post(&api_endpoint.to_url()).body(serialize_params(¶ms, "检查成员权限")?);
let response = Transport::request(api_request, config, None).await?;
extract_response_data(response, "检查成员权限")
}
pub async fn transfer_owner(
config: &Config,
params: TransferOwnerParams,
) -> SDKResult<TransferOwnerResponse> {
validate_required!(params.obj_token.trim(), "文件Token不能为空");
validate_required!(params.member_id.trim(), "新拥有者用户ID不能为空");
validate_required!(params.member_id_type.trim(), "用户ID类型不能为空");
let api_endpoint = PermissionApiOld::MemberTransfer;
let api_request: ApiRequest<TransferOwnerResponse> =
ApiRequest::post(&api_endpoint.to_url()).body(serialize_params(¶ms, "转移拥有者")?);
let response = Transport::request(api_request, config, None).await?;
extract_response_data(response, "转移拥有者")
}
pub async fn get_public_permission(
config: &Config,
params: GetPublicPermissionParams,
) -> SDKResult<GetPublicPermissionResponse> {
validate_required!(params.obj_token.trim(), "文件Token不能为空");
let api_endpoint = PermissionApiOld::Public;
let api_request: ApiRequest<GetPublicPermissionResponse> =
ApiRequest::post(&api_endpoint.to_url())
.body(serialize_params(¶ms, "获取公开权限设置")?);
let response = Transport::request(api_request, config, None).await?;
extract_response_data(response, "获取公开权限设置")
}
pub use models::{
CheckMemberPermissionParams, CheckMemberPermissionResponse, GetPublicPermissionParams,
GetPublicPermissionResponse, PermissionCheckResult, PublicPermission, TransferOwnerParams,
TransferOwnerResponse, TransferResult, UserInfo,
};