mirror of
https://github.com/zhigang1992/DefinitelyTyped.git
synced 2026-05-19 22:01:08 +08:00
Merge pull request #3210 from Steve-Fenton/master
Type Definitions for node-imap
This commit is contained in:
126
node-imap/imap-tests.ts
Normal file
126
node-imap/imap-tests.ts
Normal file
@@ -0,0 +1,126 @@
|
||||
import Imap = require('imap');
|
||||
var inspect = require('util').inspect;
|
||||
|
||||
var imap = new Imap({
|
||||
user: 'mygmailname@gmail.com',
|
||||
password: 'mygmailpassword',
|
||||
host: 'imap.gmail.com',
|
||||
port: 993,
|
||||
tls: true
|
||||
});
|
||||
|
||||
imap.once('ready', function () {
|
||||
imap.openBox('INBOX', true,function (err, box) {
|
||||
if (err) throw err;
|
||||
var f = imap.seq.fetch('1:3', {
|
||||
bodies: 'HEADER.FIELDS (FROM TO SUBJECT DATE)',
|
||||
struct: true
|
||||
});
|
||||
f.on('message', function (msg, seqno) {
|
||||
console.log('Message #%d', seqno);
|
||||
var prefix = '(#' + seqno + ') ';
|
||||
msg.on('body', function (stream, info) {
|
||||
var buffer = '';
|
||||
stream.on('data', function (chunk) {
|
||||
buffer += chunk.toString('utf8');
|
||||
});
|
||||
stream.once('end', function () {
|
||||
console.log(prefix + 'Parsed header: %s', inspect(Imap.parseHeader(buffer)));
|
||||
});
|
||||
});
|
||||
msg.once('attributes', function (attrs) {
|
||||
console.log(prefix + 'Attributes: %s', inspect(attrs, false, 8));
|
||||
});
|
||||
msg.once('end', function () {
|
||||
console.log(prefix + 'Finished');
|
||||
});
|
||||
});
|
||||
f.once('error', function (err) {
|
||||
console.log('Fetch error: ' + err);
|
||||
});
|
||||
f.once('end', function () {
|
||||
console.log('Done fetching all messages!');
|
||||
imap.end();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
imap.once('error', function (err) {
|
||||
console.log(err);
|
||||
});
|
||||
|
||||
imap.once('end', function () {
|
||||
console.log('Connection ended');
|
||||
});
|
||||
|
||||
imap.connect();
|
||||
|
||||
imap.openBox('INBOX', true, function (err, box) {
|
||||
if (err) throw err;
|
||||
var f = imap.seq.fetch(box.messages.total + ':*', { bodies: ['HEADER.FIELDS (FROM)', 'TEXT'] });
|
||||
f.on('message', function (msg, seqno) {
|
||||
console.log('Message #%d', seqno);
|
||||
var prefix = '(#' + seqno + ') ';
|
||||
msg.on('body', function (stream, info) {
|
||||
if (info.which === 'TEXT')
|
||||
console.log(prefix + 'Body [%s] found, %d total bytes', inspect(info.which), info.size);
|
||||
var buffer = '', count = 0;
|
||||
stream.on('data', function (chunk) {
|
||||
count += chunk.length;
|
||||
buffer += chunk.toString('utf8');
|
||||
if (info.which === 'TEXT')
|
||||
console.log(prefix + 'Body [%s] (%d/%d)', inspect(info.which), count, info.size);
|
||||
});
|
||||
stream.once('end', function () {
|
||||
if (info.which !== 'TEXT')
|
||||
console.log(prefix + 'Parsed header: %s', inspect(Imap.parseHeader(buffer)));
|
||||
else
|
||||
console.log(prefix + 'Body [%s] Finished', inspect(info.which));
|
||||
});
|
||||
});
|
||||
msg.once('attributes', function (attrs) {
|
||||
console.log(prefix + 'Attributes: %s', inspect(attrs, false, 8));
|
||||
});
|
||||
msg.once('end', function () {
|
||||
console.log(prefix + 'Finished');
|
||||
});
|
||||
});
|
||||
f.once('error', function (err) {
|
||||
console.log('Fetch error: ' + err);
|
||||
});
|
||||
f.once('end', function () {
|
||||
console.log('Done fetching all messages!');
|
||||
imap.end();
|
||||
});
|
||||
});
|
||||
|
||||
var fs = require('fs'), fileStream : any;
|
||||
|
||||
imap.openBox('INBOX', true,function (err, box) {
|
||||
if (err) throw err;
|
||||
imap.search(['UNSEEN', ['SINCE', 'May 20, 2010']], function (err : Error, results: any) {
|
||||
if (err) throw err;
|
||||
var f = imap.fetch(results, { bodies: '' });
|
||||
f.on('message', function (msg, seqno) {
|
||||
console.log('Message #%d', seqno);
|
||||
var prefix = '(#' + seqno + ') ';
|
||||
msg.on('body', function (stream, info) {
|
||||
console.log(prefix + 'Body');
|
||||
stream.pipe(fs.createWriteStream('msg-' + seqno + '-body.txt'));
|
||||
});
|
||||
msg.once('attributes', function (attrs) {
|
||||
console.log(prefix + 'Attributes: %s', inspect(attrs, false, 8));
|
||||
});
|
||||
msg.once('end', function () {
|
||||
console.log(prefix + 'Finished');
|
||||
});
|
||||
});
|
||||
f.once('error', function (err) {
|
||||
console.log('Fetch error: ' + err);
|
||||
});
|
||||
f.once('end', function () {
|
||||
console.log('Done fetching all messages!');
|
||||
imap.end();
|
||||
});
|
||||
});
|
||||
});
|
||||
102
node-imap/imap.d.ts
vendored
Normal file
102
node-imap/imap.d.ts
vendored
Normal file
@@ -0,0 +1,102 @@
|
||||
// Type definitions for node imap
|
||||
// Project: https://github.com/mscdex/node-imap
|
||||
// Definitions by: Steve Fenton <https://github.com/Steve-Fenton>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
/// <reference path="../node/node.d.ts" />
|
||||
|
||||
declare module "imap" {
|
||||
interface ImapOptions {
|
||||
user: string;
|
||||
password: string;
|
||||
host: string;
|
||||
port: number;
|
||||
tls: boolean;
|
||||
}
|
||||
|
||||
interface ImapBox {
|
||||
name: string;
|
||||
readOnly: boolean;
|
||||
newKeywords: boolean;
|
||||
uidvalidity: number;
|
||||
uidnext: number;
|
||||
flags: any[]; // TODO
|
||||
permFlags: any[]; // TODO
|
||||
persistentUIDs: boolean;
|
||||
messages: {
|
||||
total: number;
|
||||
'new': number;
|
||||
unseen: number;
|
||||
}
|
||||
}
|
||||
|
||||
interface ImapChunk {
|
||||
toString(charset: string): string;
|
||||
length: number;
|
||||
}
|
||||
|
||||
interface ImapFetch {
|
||||
once(event: 'end', callback: () => void): void;
|
||||
once(event: 'error', callback: (error: Error) => void): void;
|
||||
once(event: string, callback: Function): void;
|
||||
|
||||
on(event: 'message', callback: (msg: ImapMessage, seqno: number) => void): void;
|
||||
on(event: string, callback: Function): void;
|
||||
}
|
||||
|
||||
interface ImapBodyStream {
|
||||
once(event: 'end', callback: () => void): void;
|
||||
once(event: string, callback: Function): void;
|
||||
|
||||
on(event: 'data', callback: (chunk: ImapChunk) => void): void;
|
||||
on(event: string, callback: Function): void;
|
||||
|
||||
pipe(stream: any): void;
|
||||
}
|
||||
|
||||
interface ImapMessage {
|
||||
// TODO: typeof attributes
|
||||
once(event: 'attributes', callback: (attributes: any) => void): void;
|
||||
once(event: string, callback: Function): void;
|
||||
|
||||
// TODO: typeof info
|
||||
on(event: 'body', callback: (stream: ImapBodyStream, info: any) => void): void;
|
||||
on(event: string, callback: Function): void;
|
||||
}
|
||||
|
||||
class Imap {
|
||||
constructor(options: ImapOptions);
|
||||
|
||||
connect(): void;
|
||||
|
||||
//TODO:
|
||||
// param a
|
||||
openBox(name: string, a: boolean, callback: (err: Error, box: ImapBox) => void) : void;
|
||||
|
||||
//TODO:
|
||||
// param a
|
||||
// param b
|
||||
once(event: 'end', callback: () => void): void;
|
||||
once(event: 'error', callback: (error: Error) => void): void;
|
||||
once(a: string, callback: Function) : void;
|
||||
|
||||
end(): void;
|
||||
|
||||
//TODO:
|
||||
// return type
|
||||
parseHeader(header: string): any;
|
||||
static parseHeader(header: string): any;
|
||||
|
||||
search(searchTerms: any[], callback: Function): void;
|
||||
|
||||
fetch(results: any, options: {}): ImapFetch;
|
||||
|
||||
//TODO:
|
||||
// type
|
||||
seq: {
|
||||
fetch(messageSourceQuery: string, options: {}): ImapFetch;
|
||||
};
|
||||
}
|
||||
|
||||
export = Imap;
|
||||
}
|
||||
Reference in New Issue
Block a user