pub mod types;
use crate::types::{
AvatarSize, CreateGroupFolderInfo, DownloadFileInfo, GroupHighlightsType, GroupInfo,
GroupMuteInfo, HighlightsAction, MessageType, MuteType, QQCredentialInfo,
QQGroupFileSystemInfo, QQRkeyInfo, SendMsgType, SetAdminType, SetFriendApplyType,
SetGroupApplyType, UserInfo,
};
use async_trait::async_trait;
use puniyu_contact::Contact;
use puniyu_element::Message;
use std::path::PathBuf;
use std::time::Duration;
use puniyu_common::Result;
pub enum GetHistoryMsgType {
MessageId(String),
MessageSeq(u64),
}
impl From<String> for GetHistoryMsgType {
fn from(message_id: String) -> Self {
Self::MessageId(message_id)
}
}
impl From<&str> for GetHistoryMsgType {
fn from(message_id: &str) -> Self {
Self::MessageId(String::from(message_id))
}
}
impl From<u64> for GetHistoryMsgType {
fn from(message_seq: u64) -> Self {
Self::MessageSeq(message_seq)
}
}
#[async_trait]
pub trait AdapterApi: Send + Sync + 'static {
async fn get_avatar_url(&self, _target_id: &str, _size: Option<AvatarSize>) -> Result<String> {
Err("此接口未实现".into())
}
async fn get_group_avatar_url(
&self,
_group_id: &str,
_size: Option<AvatarSize>,
) -> Result<String> {
Err("此接口未实现".into())
}
async fn send_msg(&self, _contact: Contact, _element: Message) -> Result<SendMsgType> {
Err("此接口未实现".into())
}
async fn send_long_msg(&self, _res_id: &str) -> Result<SendMsgType> {
Err("此接口未实现".into())
}
async fn recall_msg(&self, _message_id: &str) -> Result<()> {
Err("此接口未实现".into())
}
async fn get_msg(&self, _message_id: &str) -> Result<MessageType> {
Err("此接口未实现".into())
}
async fn get_history_msg(
&self,
_contact: Contact,
_message: GetHistoryMsgType,
_count: u8,
) -> Result<Vec<MessageType>> {
Err("此接口未实现".into())
}
async fn get_group_highlights(
&self,
_group_id: &str,
_page: u8,
_page_size: u8,
) -> Result<Vec<GroupHighlightsType>> {
Err("此接口未实现".into())
}
async fn set_group_highlights(
&self,
_group_id: &str,
_message_id: &str,
_action: HighlightsAction,
) -> Result<()> {
Err("此接口未实现".into())
}
async fn send_like(&self, _target_id: &str, _count: Option<u8>) -> Result<()> {
Err("此接口未实现".into())
}
async fn group_kick_member(
&self,
_group_id: &str,
_target_id: &str,
_reject_add_request: Option<bool>,
_reason: Option<&str>,
) -> Result<()> {
Err("此接口未实现".into())
}
async fn set_group_mute(
&self,
_group_id: &str,
_target_id: &str,
_duration: Duration,
) -> Result<()> {
Err("此接口未实现".into())
}
async fn set_group_all_mute(&self, _group_id: &str, _action: MuteType) -> Result<()> {
Err("此接口未实现".into())
}
async fn set_group_admin(
&self,
_group_id: &str,
_target_id: &str,
_action: SetAdminType,
) -> Result<()> {
Err("此接口未实现".into())
}
async fn set_group_member_card(
&self,
_group_id: &str,
_target_id: &str,
_card: &str,
) -> Result<()> {
Err("此接口未实现".into())
}
async fn set_group_name(&self, _group_id: &str, _name: &str) -> Result<()> {
Err("此接口未实现".into())
}
async fn set_group_quit(&self, _group_id: &str) -> Result<()> {
Err("此接口未实现".into())
}
async fn set_group_member_title(
&self,
_group_id: &str,
_target_id: &str,
_title: &str,
) -> Result<()> {
Err("此接口未实现".into())
}
async fn get_stranger_info(&self, _target_id: &str) -> Result<UserInfo> {
Err("此接口未实现".into())
}
async fn get_friend_list(&self) -> Result<Vec<UserInfo>> {
Err("此接口未实现".into())
}
async fn get_group_info(&self, _group_id: &str) -> Result<GroupInfo> {
Err("此接口未实现".into())
}
async fn get_group_list(&self) -> Result<Vec<GroupInfo>> {
Err("此接口未实现".into())
}
async fn get_group_member_list(&self, _group_id: &str) -> Result<Vec<UserInfo>> {
Err("此接口未实现".into())
}
async fn get_group_honor(&self, _group_id: &str) -> Result<Vec<UserInfo>> {
Err("此接口未实现".into())
}
async fn set_friend_apply(&self, _action: SetFriendApplyType) -> Result<()> {
Err("此接口未实现".into())
}
async fn set_invited_join_group(
&self,
_group_id: &str,
_action: SetGroupApplyType,
) -> Result<()> {
Err("此接口未实现".into())
}
async fn upload_file(
&self,
_contact: Contact,
_file: Vec<u8>,
_folder: Option<&str>,
) -> Result<()> {
Err("此接口未实现".into())
}
async fn download_file(&self, _file: &str, _path: PathBuf) -> Result<DownloadFileInfo> {
Err("此接口未实现".into())
}
async fn create_group_folder(
&self,
_group_id: &str,
_folder: &str,
) -> Result<CreateGroupFolderInfo> {
Err("此接口未实现".into())
}
async fn rename_group_folder(
&self,
_group_id: &str,
_folder_id: &str,
_folder_name: &str,
) -> Result<bool> {
Err("此接口未实现".into())
}
async fn delete_group_folder(&self, _group_id: &str, _folder_id: &str) -> Result<bool> {
Err("此接口未实现".into())
}
async fn get_file_url(&self, _contact: Contact, _file_id: &str) -> Result<bool> {
Err("此接口未实现".into())
}
async fn del_group_file(&self, _group_id: &str, _file_id: &str) -> Result<bool> {
Err("此接口未实现".into())
}
async fn get_group_file_system_info(&self, _group_id: &str) -> Result<QQGroupFileSystemInfo> {
Err("此接口未实现".into())
}
async fn get_group_file_list(
&self,
_group_id: &str,
_folder_id: Option<&str>,
) -> Result<Vec<DownloadFileInfo>> {
Err("此接口未实现".into())
}
async fn get_group_mute_list(&self, _group_id: &str) -> Result<Vec<GroupMuteInfo>> {
Err("此接口未实现".into())
}
async fn poke_user(&self, _contact: Contact, _count: Option<u8>) -> Result<bool> {
Err("此接口未实现".into())
}
async fn set_avatar(&self, _avatar: Vec<u8>) -> Result<bool> {
Err("此接口未实现".into())
}
async fn get_cookie(&self, _domain: &str) -> Result<String> {
Err("此接口未实现".into())
}
async fn get_credentials(&self, _domain: &str) -> Result<QQCredentialInfo> {
Err("此接口未实现".into())
}
async fn get_csrf_token(&self) -> Result<u64> {
Err("此接口未实现".into())
}
async fn get_rkey(&self) -> Result<QQRkeyInfo> {
Err("此接口未实现".into())
}
}