Skip to content

Commit 1eb80a6

Browse files
committed
Delete message support for gmail api
1 parent 1ed38d8 commit 1eb80a6

File tree

1 file changed

+48
-26
lines changed

1 file changed

+48
-26
lines changed

lib/api-client/gmail-client.js

Lines changed: 48 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ case 'updateMessages':
4848
✅ listMailboxes
4949
case 'moveMessage':
5050
case 'moveMessages':
51-
case 'deleteMessage':
51+
deleteMessage (no force option)
5252
case 'deleteMessages':
53-
case 'getRawMessage':
53+
getRawMessage
5454
case 'getQuota':
5555
case 'createMailbox':
5656
case 'renameMailbox':
@@ -59,7 +59,7 @@ case 'deleteMailbox':
5959
case 'submitMessage':
6060
case 'queueMessage':
6161
case 'uploadMessage':
62-
case 'subconnections':
62+
subconnections
6363
6464
*/
6565

@@ -488,19 +488,31 @@ class GmailClient {
488488

489489
const accessToken = await this.getToken();
490490

491-
const requestQuery = {};
492-
const result = await this.oAuth2Client.request(
493-
accessToken,
494-
`${GMAIL_API_BASE}/gmail/v1/users/me/messages/${messageId}?format=raw`,
495-
'get',
496-
requestQuery
497-
);
498-
499-
console.log(result);
491+
const requestQuery = {
492+
format: 'raw'
493+
};
494+
const result = await this.oAuth2Client.request(accessToken, `${GMAIL_API_BASE}/gmail/v1/users/me/messages/${messageId}`, 'get', requestQuery);
500495

501496
return result?.raw ? Buffer.from(result?.raw, 'base64url') : null;
502497
}
503498

499+
async deleteMessage(messageId /*, force*/) {
500+
await this.prepare();
501+
502+
const accessToken = await this.getToken();
503+
504+
// Move to trash
505+
const url = `${GMAIL_API_BASE}/gmail/v1/users/me/messages/${messageId}/trash`;
506+
const result = await this.oAuth2Client.request(accessToken, url, 'post', Buffer.alloc(0));
507+
508+
return {
509+
deleted: result && result.labelIds?.includes('TRASH'),
510+
moved: {
511+
message: result.id
512+
}
513+
};
514+
}
515+
504516
async getAttachmentContent(attachmentId) {
505517
let sepPos = attachmentId.indexOf('.');
506518
if (sepPos < 0) {
@@ -568,13 +580,10 @@ class GmailClient {
568580

569581
const accessToken = await this.getToken();
570582

571-
const requestQuery = {};
572-
const messageData = await this.oAuth2Client.request(
573-
accessToken,
574-
`${GMAIL_API_BASE}/gmail/v1/users/me/messages/${messageId}?format=full`,
575-
'get',
576-
requestQuery
577-
);
583+
const requestQuery = {
584+
format: 'full'
585+
};
586+
const messageData = await this.oAuth2Client.request(accessToken, `${GMAIL_API_BASE}/gmail/v1/users/me/messages/${messageId}`, 'get', requestQuery);
578587

579588
let result = this.formatMessage(messageData, { extended: true, textType: options.textType });
580589

@@ -604,13 +613,10 @@ class GmailClient {
604613
bodyParts.set(p, 'html');
605614
});
606615

607-
const requestQuery = {};
608-
const messageData = await this.oAuth2Client.request(
609-
accessToken,
610-
`${GMAIL_API_BASE}/gmail/v1/users/me/messages/${messageId}?format=full`,
611-
'get',
612-
requestQuery
613-
);
616+
const requestQuery = {
617+
format: 'full'
618+
};
619+
const messageData = await this.oAuth2Client.request(accessToken, `${GMAIL_API_BASE}/gmail/v1/users/me/messages/${messageId}`, 'get', requestQuery);
614620

615621
const response = {};
616622

@@ -645,6 +651,11 @@ class GmailClient {
645651

646652
return response;
647653
}
654+
655+
// stub. no support or need for subconnections
656+
async subconnections() {
657+
return [];
658+
}
648659
}
649660

650661
module.exports = { GmailClient };
@@ -659,7 +670,18 @@ let main = async () => {
659670

660671
let messages = await gmailClient.listMessages({ path: 'INBOX' });
661672
console.log(JSON.stringify(messages, false, 2));
673+
674+
let deleted = false;
675+
662676
for (let msg of messages) {
677+
if (/testkiri/i.test(msg.subject) && !deleted) {
678+
deleted = true;
679+
680+
console.log('DELETING', msg.id);
681+
let y = await gmailClient.deleteMessage(msg.id, true);
682+
console.log('DELETE RESULT', y);
683+
}
684+
663685
if (msg.attachments && msg.attachments.length) {
664686
await gmailClient.getMessage(msg.id, { textType: '*' });
665687

0 commit comments

Comments
 (0)