mirror of
https://github.com/hexastack/hexabot
synced 2025-05-31 10:57:06 +00:00
feat: minor updates to accomodate slack
This commit is contained in:
parent
b8d8bfeaa6
commit
df8904c46a
@ -96,13 +96,12 @@ export class AttachmentService extends BaseService<Attachment> {
|
|||||||
* @param res - The response object from which the profile picture will be buffered or piped.
|
* @param res - The response object from which the profile picture will be buffered or piped.
|
||||||
* @param filename - The filename
|
* @param filename - The filename
|
||||||
*/
|
*/
|
||||||
async uploadProfilePic(res: fetch.Response, filename: string) {
|
async uploadProfilePic(data: Buffer | fetch.Response, filename: string) {
|
||||||
if (this.getStoragePlugin()) {
|
if (this.getStoragePlugin()) {
|
||||||
// Upload profile picture
|
// Upload profile picture
|
||||||
const buffer = await res.buffer();
|
|
||||||
const picture = {
|
const picture = {
|
||||||
originalname: filename,
|
originalname: filename,
|
||||||
buffer,
|
buffer: Buffer.isBuffer(data) ? data : await data.buffer(),
|
||||||
} as Express.Multer.File;
|
} as Express.Multer.File;
|
||||||
try {
|
try {
|
||||||
await this.getStoragePlugin().uploadAvatar(picture);
|
await this.getStoragePlugin().uploadAvatar(picture);
|
||||||
@ -122,12 +121,19 @@ export class AttachmentService extends BaseService<Attachment> {
|
|||||||
} else {
|
} else {
|
||||||
// Save profile picture locally
|
// Save profile picture locally
|
||||||
const dirPath = path.join(config.parameters.avatarDir, filename);
|
const dirPath = path.join(config.parameters.avatarDir, filename);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
// Ensure the directory exists
|
||||||
await fs.promises.mkdir(config.parameters.avatarDir, {
|
await fs.promises.mkdir(config.parameters.avatarDir, {
|
||||||
recursive: true,
|
recursive: true,
|
||||||
}); // Ensure the directory exists
|
});
|
||||||
const dest = fs.createWriteStream(dirPath);
|
|
||||||
res.body.pipe(dest);
|
if (Buffer.isBuffer(data)) {
|
||||||
|
await fs.promises.writeFile(dirPath, data);
|
||||||
|
} else {
|
||||||
|
const dest = fs.createWriteStream(dirPath);
|
||||||
|
data.body.pipe(dest);
|
||||||
|
}
|
||||||
this.logger.debug(
|
this.logger.debug(
|
||||||
'Messenger Channel Handler : Profile picture fetched successfully',
|
'Messenger Channel Handler : Profile picture fetched successfully',
|
||||||
);
|
);
|
||||||
@ -204,4 +210,22 @@ export class AttachmentService extends BaseService<Attachment> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Downloads an attachment identified by the provided parameters as a Buffer.
|
||||||
|
*
|
||||||
|
* @param attachment - The attachment to download.
|
||||||
|
* @returns A promise that resolves to a Buffer representing the downloaded attachment.
|
||||||
|
*/
|
||||||
|
async readAsBuffer(attachment: Attachment): Promise<Buffer> {
|
||||||
|
if (this.getStoragePlugin()) {
|
||||||
|
return await this.getStoragePlugin().readAsBuffer(attachment);
|
||||||
|
} else {
|
||||||
|
if (!fileExists(attachment.location)) {
|
||||||
|
throw new NotFoundException('No file was found');
|
||||||
|
}
|
||||||
|
const filePath = join(config.parameters.uploadDir, attachment.location);
|
||||||
|
return await fs.promises.readFile(filePath); // Reads the file content as a Buffer
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,13 +28,17 @@ export interface ChannelEvent {}
|
|||||||
|
|
||||||
// eslint-disable-next-line prettier/prettier
|
// eslint-disable-next-line prettier/prettier
|
||||||
export default abstract class EventWrapper<
|
export default abstract class EventWrapper<
|
||||||
A,
|
A extends {
|
||||||
|
eventType: StdEventType;
|
||||||
|
messageType?: IncomingMessageType;
|
||||||
|
raw: E;
|
||||||
|
},
|
||||||
E,
|
E,
|
||||||
N extends ChannelName = ChannelName,
|
N extends ChannelName = ChannelName,
|
||||||
C extends ChannelHandler = ChannelHandler<N>,
|
C extends ChannelHandler = ChannelHandler<N>,
|
||||||
S = SubscriberChannelDict[N],
|
S = SubscriberChannelDict[N],
|
||||||
> {
|
> {
|
||||||
_adapter: A = {} as A;
|
_adapter: A = { raw: {}, eventType: StdEventType.unknown } as A;
|
||||||
|
|
||||||
_handler: C;
|
_handler: C;
|
||||||
|
|
||||||
@ -54,7 +58,7 @@ export default abstract class EventWrapper<
|
|||||||
* @param event - The message event received
|
* @param event - The message event received
|
||||||
* @param channelAttrs - Channel's specific data
|
* @param channelAttrs - Channel's specific data
|
||||||
*/
|
*/
|
||||||
constructor(handler: C, event: E, channelAttrs: S = {} as S) {
|
constructor(handler: C, event: A['raw'], channelAttrs: S = {} as S) {
|
||||||
this._handler = handler;
|
this._handler = handler;
|
||||||
this._init(event);
|
this._init(event);
|
||||||
this.channelAttrs = channelAttrs;
|
this.channelAttrs = channelAttrs;
|
||||||
@ -66,7 +70,7 @@ export default abstract class EventWrapper<
|
|||||||
handler: this._handler.getName(),
|
handler: this._handler.getName(),
|
||||||
channelData: this.getChannelData(),
|
channelData: this.getChannelData(),
|
||||||
sender: this.getSender(),
|
sender: this.getSender(),
|
||||||
recipient: this.getRecipientForeignId(),
|
// recipient: this.getRecipientForeignId(),
|
||||||
eventType: this.getEventType(),
|
eventType: this.getEventType(),
|
||||||
messageType: this.getMessageType(),
|
messageType: this.getMessageType(),
|
||||||
payload: this.getPayload(),
|
payload: this.getPayload(),
|
||||||
@ -90,7 +94,7 @@ export default abstract class EventWrapper<
|
|||||||
*- `_adapter.raw` : Sets a typed object of the event raw data
|
*- `_adapter.raw` : Sets a typed object of the event raw data
|
||||||
* @param event - The message event received from a given channel
|
* @param event - The message event received from a given channel
|
||||||
*/
|
*/
|
||||||
abstract _init(event: E): void;
|
abstract _init(event: A['raw']): void;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves the current channel handler.
|
* Retrieves the current channel handler.
|
||||||
@ -198,14 +202,18 @@ export default abstract class EventWrapper<
|
|||||||
*
|
*
|
||||||
* @returns The type of event received (message, delivery, read, ...)
|
* @returns The type of event received (message, delivery, read, ...)
|
||||||
*/
|
*/
|
||||||
abstract getEventType(): StdEventType;
|
getEventType(): StdEventType {
|
||||||
|
return this._adapter.eventType;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Identifies the type of the message received
|
* Identifies the type of the message received
|
||||||
*
|
*
|
||||||
* @return The type of message
|
* @return The type of message
|
||||||
*/
|
*/
|
||||||
abstract getMessageType(): IncomingMessageType;
|
getMessageType(): IncomingMessageType | undefined {
|
||||||
|
return this._adapter.messageType;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return payload whenever user clicks on a button/quick_reply or sends an attachment, false otherwise
|
* Return payload whenever user clicks on a button/quick_reply or sends an attachment, false otherwise
|
||||||
|
@ -212,7 +212,7 @@ export class ChatService {
|
|||||||
mid: event.getId(),
|
mid: event.getId(),
|
||||||
recipient: recipient.id,
|
recipient: recipient.id,
|
||||||
message: event.getMessage(),
|
message: event.getMessage(),
|
||||||
delivery: false,
|
delivery: true,
|
||||||
read: false,
|
read: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -88,8 +88,7 @@ export class NlpSampleService extends BaseService<
|
|||||||
await this.findOneOrCreate(record, record);
|
await this.findOneOrCreate(record, record);
|
||||||
this.logger.debug('User message saved as a inbox sample !');
|
this.logger.debug('User message saved as a inbox sample !');
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
this.logger.error('Unable to add message as a new inbox sample!', err);
|
this.logger.warn('Unable to add message as a new inbox sample!', err);
|
||||||
throw err;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,4 +32,6 @@ export abstract class BaseStoragePlugin extends BasePlugin {
|
|||||||
abstract download(attachment: Attachment): Promise<StreamableFile>;
|
abstract download(attachment: Attachment): Promise<StreamableFile>;
|
||||||
|
|
||||||
abstract downloadProfilePic(name: string): Promise<StreamableFile>;
|
abstract downloadProfilePic(name: string): Promise<StreamableFile>;
|
||||||
|
|
||||||
|
readAsBuffer?(attachment: Attachment): Promise<Buffer>;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user