发送webhook

时间:2015-07-30 21:22:26

标签: ruby-on-rails json webhooks

我正在处理的应用程序目前正在接收来自GitHub的webhooks。我们正在尝试执行以下操作:

raw_payload = request.raw_post
original_payload = JSON.parse(raw_payload)

然后original_payload将是来自webhook的已解析原始数据。当我使用curl命令发送webhook时,一切都在本地工作:找到原始数据,并解析JSON。但是,每当我把它放在我的暂存环境中并且它开始从GitHub获取真正的 webhooks时,它就会开始打破这个错误:

TypeError (no implicit conversion of nil into String):
json (1.8.3) lib/json/common.rb:155:in `initialize'
json (1.8.3) lib/json/common.rb:155:in `new'
json (1.8.3) lib/json/common.rb:155:in `parse'

在表示JSON.parse(raw_payload)的行上,基本上意味着raw_payload为零。什么情况会使request.raw_post在暂存时返回nil,但在开发中正常工作?

提前感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:0)

弄清楚我自己的问题。问题发生在整个request.raw_post事件中。虽然遗憾的是raw_post返回nil的真正原因仍然是一个谜(我们假设它与我们可以抓取它之前删除和刷新的webhook数据有关),我们确实找到了解决方法:

raw_parameters = request.request_parameters

然后我们可以像raw_parameters那样获取值:

new_request[:github_action] = raw_parameters["action"]

此外,这样,如果没有raw_parameters["action"],则new_request不会改变任何内容。这解决了我们所有的问题!

抱歉,我无法找到raw_post返回nil的确切原因!