使用flask的github webhook服务器

flask-hookserver的Python项目详细描述


https://img.shields.io/travis/nickfrostatx/flask-hookserver.svghttps://img.shields.io/coveralls/nickfrostatx/flask-hookserver.svghttps://img.shields.io/pypi/v/flask-hookserver.svghttps://img.shields.io/pypi/l/flask-hookserver.svg

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)

  • 初始版本

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在Android Wifi中筛选相同的SSID?   Java中重写接口中异常处理的泛型   java“无效转义序列(有效的是\b\t\n\f\r\”\“\”\)”语法错误   使用JNDI的java NameReadyBoundException   java如何在这个程序上执行算法   java为什么我的应用程序在调试时崩溃而应用程序停止?   Java:while循环未检测到中断条件,但如果块检测到   java如何快速使用jfreechart创建的折线图   java将输入放入JSTL会话变量,以便稍后在屏幕上显示   java在spring boot中加载外部JAR   java Apache NiFi无法使用ojdbc6连接到Oracle 12c。jar或ojdbc8。罐子   java解释StringToWordVector()Weka的输出   java charAt()找不到符号   使用mpjexpress的java阅读控制台输入