diff --git a/src/message-media.ts b/src/message-media.ts new file mode 100644 index 0000000000000000000000000000000000000000..e0a7dd7b7ae6ffe658ef74148f7d77186a476541 --- /dev/null +++ b/src/message-media.ts @@ -0,0 +1,61 @@ +import { + Readable, +} from 'stream' + +import Contact from './contact' +import Message from './message' +import Room from './room' + +/** + * Meidia Type Message + * + */ +export abstract class MediaMessage extends Message { + /** + * @private + */ + public toString() { + return `MediaMessage<${this.filename()}>` + } + + /** + * Get the MediaMessage file extension, etc: `jpg`, `gif`, `pdf`, `word` .. + * + * @returns {string} + * @example + * bot.on('message', async function (m) { + * if (m instanceof MediaMessage) { + * console.log('media message file name extention is: ' + m.ext()) + * } + * }) + */ + public abstract ext(): string + + /** + * return the MIME Type of this MediaMessage + * + */ + public abstract mimeType(): string | null + + /** + * Get the MediaMessage filename, etc: `how to build a chatbot.pdf`.. + * + * @returns {string} + * @example + * bot.on('message', async function (m) { + * if (m instanceof MediaMessage) { + * console.log('media message file name is: ' + m.filename()) + * } + * }) + */ + public abstract filename(): string + + /** + * Get the read stream for attachment file + */ + public abstract async readyStream(): Promise + + public abstract async forward(to: Room | Contact): Promise +} + +export default MediaMessage diff --git a/src/message.ts b/src/message.ts index debf6c6e773dea4b6bf16966ec80b45f85ef3614..2000e740557691608e39bc8b2df519c8647d1220 100644 --- a/src/message.ts +++ b/src/message.ts @@ -16,9 +16,11 @@ * limitations under the License. * @ignore */ + import { - Readable, -} from 'stream' + MsgType, + AppMsgType, +} from './puppet-web/schema' import { Sayable, @@ -29,10 +31,8 @@ import Contact from './contact' import Room from './room' import PuppetAccessory from './puppet-accessory' -import { - MsgType, - AppMsgType, -} from './puppet-web/schema' +// circuliar dependencies? +import MediaMessage from './message-media' // export type TypeName = 'attachment' // | 'audio' @@ -236,56 +236,4 @@ export abstract class Message extends PuppetAccessory implements Sayable { } -/** - * Meidia Type Message - * - */ -export abstract class MediaMessage extends Message { - /** - * @private - */ - public toString() { - return `MediaMessage<${this.filename()}>` - } - - /** - * Get the MediaMessage file extension, etc: `jpg`, `gif`, `pdf`, `word` .. - * - * @returns {string} - * @example - * bot.on('message', async function (m) { - * if (m instanceof MediaMessage) { - * console.log('media message file name extention is: ' + m.ext()) - * } - * }) - */ - public abstract ext(): string - - /** - * return the MIME Type of this MediaMessage - * - */ - public abstract mimeType(): string | null - - /** - * Get the MediaMessage filename, etc: `how to build a chatbot.pdf`.. - * - * @returns {string} - * @example - * bot.on('message', async function (m) { - * if (m instanceof MediaMessage) { - * console.log('media message file name is: ' + m.filename()) - * } - * }) - */ - public abstract filename(): string - - /** - * Get the read stream for attachment file - */ - public abstract async readyStream(): Promise - - public abstract async forward(to: Room|Contact): Promise -} - export default Message