From eac74c371ed80162897ac2f477dc62eaf2d680b4 Mon Sep 17 00:00:00 2001 From: tkQubo Date: Tue, 25 Aug 2015 19:57:18 +0900 Subject: [PATCH] Add node-slack --- jsdeferred/jsdeferred.d.ts | 4 +-- node-slack/node-slack-tests.ts | 46 +++++++++++++++++++++++++ node-slack/node-slack.d.ts | 61 ++++++++++++++++++++++++++++++++++ 3 files changed, 109 insertions(+), 2 deletions(-) create mode 100644 node-slack/node-slack-tests.ts create mode 100644 node-slack/node-slack.d.ts diff --git a/jsdeferred/jsdeferred.d.ts b/jsdeferred/jsdeferred.d.ts index 27a4fb65af..7d7b6ce96a 100644 --- a/jsdeferred/jsdeferred.d.ts +++ b/jsdeferred/jsdeferred.d.ts @@ -24,8 +24,8 @@ interface RetryOption { interface DeferredizedFunction { (...arg: any[]): Deferred; } interface DeferredizedFunctionWithNumber { (n: number): Deferred; } -interface FunctionWithNumber { (i: number, o?: any); } -interface ErrorCallback { (d: Deferred, ...args: any[]); } +interface FunctionWithNumber { (i: number, o?: any): any; } +interface ErrorCallback { (d: Deferred, ...args: any[]): any; } declare class Deferred { diff --git a/node-slack/node-slack-tests.ts b/node-slack/node-slack-tests.ts new file mode 100644 index 0000000000..e0c6e23b93 --- /dev/null +++ b/node-slack/node-slack-tests.ts @@ -0,0 +1,46 @@ +/// +/// + +import express = require('express'); +import Slack = require('node-slack'); +let app = express(); + +var hook_url: string = 'foo_hook'; +var options: Slack.Option = { proxy: '' }; + +var slack = new Slack(hook_url, options); + +slack.send({ + text: 'Howdy!', + channel: '#foo', + username: 'Bot' +}); + +var attachment_array: any[] = []; + +slack.send({ + text: 'Howdy!', + channel: '#foo', + username: 'Bot', + icon_emoji: 'taco', + attachments: attachment_array, + unfurl_links: true, + link_names: 1 +}); + + +app.post('/yesman', function(req, res) { + + var reply = slack.respond(req.body, function(hook: any) { + + return { + text: 'Good point, ' + hook.user_name, + username: 'Bot' + }; + + }); + + res.json(reply); + +}); + diff --git a/node-slack/node-slack.d.ts b/node-slack/node-slack.d.ts new file mode 100644 index 0000000000..8243be565f --- /dev/null +++ b/node-slack/node-slack.d.ts @@ -0,0 +1,61 @@ +// Type definitions for node-slack +// Project: https://github.com/xoxco/node-slack +// Definitions by: Qubo +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + +declare module "node-slack" { + import request = require('request'); + + class Slack { + constructor(hookUrl: string, option?: Slack.Option); + send(message: Slack.Message): any; //TODO: Here comes deferred's promise as a return type + send(message: Slack.Message, callback: Slack.SendCallback): request.Request; + respond(query: Slack.Query): Slack.TextResponse; + respond(query: Slack.Query, callback: Slack.ResponseCallback): Slack.TextResponse; + } + + namespace Slack { + + interface Option { + proxy: string; + } + + interface Message { + text: string; + channel?: string; + username?: string; + icon_emoji?: string; + attachments?: any[]; + unfurl_links?: boolean; + link_names?: number; + } + + interface SendCallback { + (err: any, body: any): any; + } + + interface Query { + token?: string; + team_id?: string; + channel_id?: string; + channel_name?: string; + timestamp?: number; + user_id?: string; + user_name?: string; + text: string; + } + + interface TextResponse { + text: string; + } + + interface ResponseCallback { + (err: any, query: Query): any; + } + } + + export = Slack; +} +