Skip to content

Commit 7ddc836

Browse files
committed
started with message moving
1 parent 89f0f01 commit 7ddc836

File tree

1 file changed

+58
-3
lines changed

1 file changed

+58
-3
lines changed

lib/api-client/gmail-client.js

+58-3
Original file line numberDiff line numberDiff line change
@@ -41,25 +41,26 @@ const SYSTEM_NAMES = {
4141
/*
4242
4343
✅ listMessages
44+
❌ paging - not implemented
4445
✅ getText
4546
✅ getMessage
4647
case 'updateMessage':
4748
case 'updateMessages':
4849
✅ listMailboxes
4950
case 'moveMessage':
5051
case 'moveMessages':
51-
✅ deleteMessage (no force option)
52+
✅ deleteMessage - no force option
5253
case 'deleteMessages':
5354
✅ getRawMessage
54-
case 'getQuota':
55+
⭕️ getQuota - not supported
5556
case 'createMailbox':
5657
case 'renameMailbox':
5758
case 'deleteMailbox':
5859
✅ getAttachment
5960
case 'submitMessage':
6061
case 'queueMessage':
6162
case 'uploadMessage':
62-
subconnections
63+
⭕️ subconnections - not supported
6364
6465
*/
6566

@@ -101,6 +102,11 @@ class GmailClient {
101102
await this.getClient();
102103
}
103104

105+
// Treat Quota request as unsupported by mail server
106+
async getQuota() {
107+
return false;
108+
}
109+
104110
async listMailboxes(options) {
105111
await this.prepare();
106112

@@ -513,6 +519,51 @@ class GmailClient {
513519
};
514520
}
515521

522+
async moveMessage(messageId, target) {
523+
target = target || {};
524+
// target.path
525+
526+
await this.prepare();
527+
528+
const accessToken = await this.getToken();
529+
530+
const requestQuery = {
531+
format: 'minimal'
532+
};
533+
534+
let path = (target.path || '').toString().trim();
535+
536+
let label;
537+
538+
if (/^inbox$/i.test(path)) {
539+
label = 'INBOX';
540+
}
541+
542+
for (let key of Object.keys(SYSTEM_NAMES)) {
543+
if (path === SYSTEM_NAMES[key]) {
544+
label = key;
545+
}
546+
}
547+
548+
if (!label) {
549+
label = path;
550+
}
551+
552+
const messageData = await this.oAuth2Client.request(accessToken, `${GMAIL_API_BASE}/gmail/v1/users/me/messages/${messageId}`, 'get', requestQuery);
553+
554+
console.log({ label, p: path.toUpperCase(), s: SYSTEM_NAMES[path.toUpperCase()] });
555+
556+
if (!messageData) {
557+
return false;
558+
}
559+
560+
if (messageData.labelIds.includes(label)) {
561+
return true;
562+
}
563+
564+
console.log(messageData);
565+
}
566+
516567
async getAttachmentContent(attachmentId) {
517568
let sepPos = attachmentId.indexOf('.');
518569
if (sepPos < 0) {
@@ -688,6 +739,10 @@ let main = async () => {
688739
const textContent = await gmailClient.getText(msg.text.id, { textType: '*' });
689740
console.log('TEXT CONTENT', textContent);
690741

742+
console.log('MOVE MESSAGE');
743+
let moveRes = await gmailClient.moveMessage(msg.id, { path: 'Inbox' });
744+
console.log('MOVE RES', moveRes);
745+
691746
let raw = await gmailClient.getRawMessage(msg.id);
692747
await fs.promises.writeFile(`/Users/andris/Desktop/${msg.id}.eml`, raw);
693748
for (let a of msg.attachments) {

0 commit comments

Comments
 (0)