|
import { |
|
Body, |
|
Controller, |
|
Delete, |
|
Get, |
|
Param, |
|
Post, |
|
Put, |
|
Query, |
|
} from '@nestjs/common'; |
|
import { ApiOperation, ApiSecurity, ApiTags } from '@nestjs/swagger'; |
|
|
|
import { SessionManager } from '../core/abc/manager.abc'; |
|
import { WhatsappSession } from '../core/abc/session.abc'; |
|
import { parseBool } from '../helpers'; |
|
import { GetChatMessagesQuery } from '../structures/chats.dto'; |
|
import { EditMessageRequest } from '../structures/chatting.dto'; |
|
import { |
|
ChatIdApiParam, |
|
MessageIdApiParam, |
|
SessionApiParam, |
|
SessionParam, |
|
} from './helpers'; |
|
|
|
@ApiSecurity('api_key') |
|
@Controller('api/:session/chats') |
|
@ApiTags('chats') |
|
class ChatsController { |
|
constructor(private manager: SessionManager) {} |
|
|
|
@Get('') |
|
@SessionApiParam |
|
@ApiOperation({ summary: 'Get all chats' }) |
|
getAllChats(@SessionParam session: WhatsappSession) { |
|
return session.getChats(); |
|
} |
|
|
|
@Delete(':chatId') |
|
@SessionApiParam |
|
@ApiOperation({ summary: 'Deletes the chat' }) |
|
deleteChat( |
|
@SessionParam session: WhatsappSession, |
|
@Param('chatId') chatId: string, |
|
) { |
|
return session.deleteChat(chatId); |
|
} |
|
|
|
@Get(':chatId/messages') |
|
@SessionApiParam |
|
@ApiOperation({ summary: 'Gets messages in the chat' }) |
|
getChatMessages( |
|
@Query() query: GetChatMessagesQuery, |
|
@SessionParam session: WhatsappSession, |
|
@Param('chatId') chatId: string, |
|
) { |
|
const downloadMedia = parseBool(query.downloadMedia); |
|
return session.getChatMessages(chatId, query.limit, downloadMedia); |
|
} |
|
|
|
@Delete(':chatId/messages') |
|
@SessionApiParam |
|
@ApiOperation({ summary: 'Clears all messages from the chat' }) |
|
clearMessages( |
|
@SessionParam session: WhatsappSession, |
|
@Param('chatId') chatId: string, |
|
) { |
|
return session.clearMessages(chatId); |
|
} |
|
|
|
@Delete(':chatId/messages/:messageId') |
|
@SessionApiParam |
|
@ChatIdApiParam |
|
@MessageIdApiParam |
|
@ApiOperation({ summary: 'Deletes a message from the chat' }) |
|
deleteMessage( |
|
@SessionParam session: WhatsappSession, |
|
@Param('chatId') chatId: string, |
|
@Param('messageId') messageId: string, |
|
) { |
|
return session.deleteMessage(chatId, messageId); |
|
} |
|
|
|
@Put(':chatId/messages/:messageId') |
|
@SessionApiParam |
|
@ChatIdApiParam |
|
@MessageIdApiParam |
|
@ApiOperation({ summary: 'Edits a message in the chat' }) |
|
editMessage( |
|
@SessionParam session: WhatsappSession, |
|
@Param('chatId') chatId: string, |
|
@Param('messageId') messageId: string, |
|
@Body() body: EditMessageRequest, |
|
) { |
|
return session.editMessage(chatId, messageId, body); |
|
} |
|
} |
|
|
|
export { ChatsController }; |
|
|