bitbucket_webhook————bitbucket钩子
koa-bitbucket-webhook-handler————koa中间件:bitbucket钩子
wechat_enterprise_api————企业微信API封装
controller————业务逻辑,对数据从新封装
provider————消息推送文件
route-decorators————自定义的路由装饰器
scheduler————定时器
service————细分controller层的业务逻辑,主要处理企业微信API相关逻辑
static
htmldata————群信息json文件,用于持久化存储
config.js————企业微信appid、appsecret、address_secret、agentid
util.js————读写文件、判断是否跨域函数等前端
store————redis、企业微信api、消息钩子
noderedis.js————定义全局redis模块
webhookHandler————定义全局消息钩子仓库
WebchatAPI————定义企业微信消息模块
git
app.js————入口文件github
当有一个带有事件的Webhook时,只要该事件发生,Bitbucket就会将事件请求发送到该Webhook的服务器URL。
复制代码
因此当配好要被发送到的服务器地址后,事件流如发起合并:pr:opened,push事件:repo:refs_changed,审核人merge操做:pr:merge,needs_work事件:pr:reviewer:needs_work等等都会有对应的json数据返回,而后就能够获取想要的有用信息。web
ES5写法
var EventEmitter = require('events').EventEmitter
function create(options) {
// 定义handler函数,指向EventEmitter的原型,继承EventEmitter的变量和方法
handler.__proto__ = EventEmitter.prototype
// 改变this指针指向handler函数
EventEmitter.call(handler)
return handler
function handler(req, res, callback) {
// ...do something
}
}
复制代码
ES6写法
const _events = require('events');
class BitbucketWebhookHandler extends _events.EventEmitter {
constructor(ops) {
super();
this.ops = ops;
}
}
export default BitbucketWebhookHandler;
复制代码
EventEmitter 的核心就是事件触发与事件监听器功能的封装。
redis
它接受两个参数,第一个是事件名称,第二个是回调函数名称。json
使用方法:
赋值:redis.multi() //开启多事务
.set(key, value)
.exec((err) => {
return;
})
取值:redis.get(key).then((res) => { ... } )
删除key: redis.del(key)
复制代码
const schedule = require('node-schedule');
const rule = new schedule.RecurrenceRule(); // 设置定时器规则
rule.dayOfWeek = [1];
rule.hour = 2;
rule.minute = 0;
schedule.scheduleJob(rule, () => {
// ...do something
}
复制代码
最后附上git地址,欢迎star啊 §[开心]§
Githubapi