fc484bde2d
### Introducing - mock files in order to setup unit test on parsing outlook messages - special spec files for development purposes : dev.spec files. They are CI skipped with xdescribe but very useful for iterating on new messages format - main functionality : getMessages. We use microsoft default client to do so, using the $batch endpoint to group calls by 20 ### documentation final touch to add troubleshooting tips
55 lines
1.9 KiB
TypeScript
55 lines
1.9 KiB
TypeScript
import { Injectable } from '@nestjs/common';
|
|
|
|
import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity';
|
|
import { GmailGetMessagesService } from 'src/modules/messaging/message-import-manager/drivers/gmail/services/gmail-get-messages.service';
|
|
import { MicrosoftGetMessagesService } from 'src/modules/messaging/message-import-manager/drivers/microsoft/services/microsoft-get-messages.service';
|
|
import {
|
|
MessageImportException,
|
|
MessageImportExceptionCode,
|
|
} from 'src/modules/messaging/message-import-manager/exceptions/message-import.exception';
|
|
import { MessageWithParticipants } from 'src/modules/messaging/message-import-manager/types/message';
|
|
|
|
export type GetMessagesResponse = MessageWithParticipants[];
|
|
|
|
@Injectable()
|
|
export class MessagingGetMessagesService {
|
|
constructor(
|
|
private readonly gmailGetMessagesService: GmailGetMessagesService,
|
|
private readonly microsoftGetMessagesService: MicrosoftGetMessagesService,
|
|
) {}
|
|
|
|
public async getMessages(
|
|
messageIds: string[],
|
|
connectedAccount: Pick<
|
|
ConnectedAccountWorkspaceEntity,
|
|
| 'provider'
|
|
| 'accessToken'
|
|
| 'refreshToken'
|
|
| 'id'
|
|
| 'handle'
|
|
| 'handleAliases'
|
|
>,
|
|
workspaceId: string,
|
|
): Promise<GetMessagesResponse> {
|
|
switch (connectedAccount.provider) {
|
|
case 'google':
|
|
return this.gmailGetMessagesService.getMessages(
|
|
messageIds,
|
|
connectedAccount,
|
|
workspaceId,
|
|
);
|
|
case 'microsoft':
|
|
return this.microsoftGetMessagesService.getMessages(
|
|
messageIds,
|
|
connectedAccount,
|
|
workspaceId,
|
|
);
|
|
default:
|
|
throw new MessageImportException(
|
|
`Provider ${connectedAccount.provider} is not supported`,
|
|
MessageImportExceptionCode.PROVIDER_NOT_SUPPORTED,
|
|
);
|
|
}
|
|
}
|
|
}
|