使用flask的github webhook服务器
flask-hookserver的Python项目详细描述
Github Webhooks使用烧瓶。
这个工具从github接收webhook并将数据传递给 用户定义的函数。它验证hmac签名,并检查 起始IP地址来自GitHub IP块。
支撑烧瓶>;=0.9
安装
$ pip install Flask-Hookserver
用法
fromflaskimportFlaskfromflask.ext.hookserverimportHooksapp=Flask(__name__)app.config['GITHUB_WEBHOOKS_KEY']='my_secret_key'hooks=Hooks(app,url='/hooks')@hooks.hook('ping')defping(data,guid):return'pong'app.run()
我们开始了!localhost:8000/hooks现在将接受github webhook 事件。
配置
签名和IP验证都是可选的,但在默认情况下处于启用状态。他们 每个都可以用配置标志关闭。
app=HookServer(__name__)app.config['VALIDATE_IP']=Falseapp.config['VALIDATE_SIGNATURE']=False
如果VALIDATE_SIGNATURE设置为True,则需要提供密钥 在app.config['GITHUB_WEBHOOKS_KEY']中。
例外情况
如果出了什么问题,将筹集一笔定期的HTTPException。可能的 错误包括:
- 400:缺少一些标题
- 400:请求正文不是有效的json
- 400:签名丢失或不正确
- 403:请求来自无效的IP地址
- 503:无法从github下载有效的webhooks IP块
历史记录
1.1.0(2016-04-10)
- 使用github_webhooks_key如果提供,则返回secret_key
1.0.0(2015-12-25)
- 重构成适当的烧瓶延伸段
- 从hookserver移到flask.ext.hookserver
- 引入一个可以注册到多个应用程序的hooks对象
- 删除重要蓝图和独立烧瓶应用程序
- 将密钥重命名为github_webhooks_key
0.3.2(2015-11-28)
- 不要从测试套件实际连接到github
- 从travis部署到pypi
0.3.1(2015-11-19)
- 接受Unicode键
- 如果缺少validate_ip和validate_签名,则默认为true
0.3.0(2015-11-08)
- 将hooks url路由移动到蓝图中
- 当超过GitHub请求限制时,报告速率限制将过期
0.2.1(2015-10-21)
- 安装请求安全依赖项
0.2.0(2015-10-21)
- 正确的Python2.7支持
- 遵守GitHub每小时60个请求的速率限制
- 使hookserver的key param为可选
- 添加可选参数url
- 使用validate_ip和validate_signature而不是debug
- 简化一些错误消息
- 添加测试套件
0.1.4(2015-04-07)
- 支持映射到IPv6的IPv4地址
0.1.3(2014-07-10)
- 修复IP地址解码中的Python2错误
0.1.2(2014-07-09)
- 在调试模式下忽略hmac
0.1.1(2014-07-08)
- 每次请求时重新加载github IP块
0.1.0(2014-07-07)
- 初始版本