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