我正在构建一个小工具(没有用户界面),它将接受来自多个服务的webhook,重新格式化内容,然后将标准化内容发送到另一个webhook。
示例:Stripes webhook包含大量原始数据,但我想使用摘要ping另一个webhook。所以我想把原始数据条带发送给我,将其重新格式化为一个简单的字符串,然后发送到另一个webhook。
我想这个脚本是这样做的:
# 1. receive webhook sent to URL with ?service=stripe param
# 2. parse URL to get service param
# 3. parse data received in payload
# 4. use some of the data received in new string
# 5. send string to new webhook
我喜欢在GAE上举办此活动。我用Django构建了很多项目,但是因为这并不需要看起来很重的UI或数据库。我喜欢任何帮助。我已经设置了GAE项目,这就是:
import web #using web.py
import logging
urls = (
"/.*", "hooks",
)
app = web.application(urls, globals())
class hooks:
# 1. DONE receive webhook sent to URL with ?service=stripe param
def POST(self):
# 2. parse URL to get service param
# ...
# service_name = [parsed service name]
# 3. DONE parse data received in payload
data = web.data()
logging.info(data)
# 4. DONE use some of the data received in new string
# (I've got the reformatting scripts already written)
# data_to_send = reformat(data, service_name)
# 5. send data_to_send as payload to new webhook
# new_webhook_url = 'http://example.com/1823123/'
# CURL for new webhook is: curl -X POST -H 'Content-Type: application/json' 'http://example.com/1823123/' -d '{"text": data_to_send}'
return 'OK'
app = app.gaerun()
那么在GAE上,是否有一种首选方法(2)解析传入的URL和(5)发送webhook?
答案 0 :(得分:1)
我不熟悉web.py.许多GAE应用程序都基于webapp2。
要使用webapp2解析网址,请创建routes。这是我为处理PayPal IPN而创建的简单路线:
(r'/ipn/(\S+)/(\w+)', website.ProcessIPN)
然后我有一个处理这条路线的处理程序:
class ProcessIPN(webapp2.RequestHandler):
def post(self, user, secret):
payload = json.loads(self.request.body)
...
路由是一个正则表达式,它捕获URL的两个部分,这些部分作为处理程序的两个参数(用户和机密)传递。假设您的有效负载是JSON,那么您可以使用webapp2轻松获取它,如上所示。
要发送webhook,您需要使用urlfetch。
鉴于您的用例有多简单,我建议不要使用web.py而是使用webapp2。