2016-10-16 14 views
0

私はemacs-web-serverngrokを使ってGitHubからWebhooksを受け取っています。設定に関しては、私は手動でのGithubのサイト上で再配信ボタンを経由してのGithubからの要求を発射しています:emacs-web-serverを使用してウェブフックを解析する

Sent from GitHub

私はGitHubのからの要求を処理するために、次のコードを使用しています:

(ws-start 
'(((:POST . ".*") . 
    (lambda (request) 
     (with-slots (process headers pending) request 
     (print "# pending start #") 
     (print pending))))) 
9005) 

http://eschulte.github.io/emacs-web-server/POST-Echo.html#POST-Echo

はそれだけで罰金に来ている、とpendingショーのprint ING:例emacs-web-server POSTはここで見つけることができます

Request

しかし、私は(つまり、二重線以下のすべてのコンテンツが壊れる:{\"ref\"..と上)変数にペイロードを分離するトラブルを抱えている:私のメッセージバッファに次のよう。私はいくつかの正規表現を試しました。これらはすべて、保留中の変数の貼り付けられたコピーでスクラッチバッファーで使用すると機能しますが、実際のペイロードのシナリオでは機能しません。おそらく、^Mには、コンテンツが別のバッファに貼り付けられたときには存在しないため、これと関連があります。誰かが正しい方向に私を指すことができれば、それは非常に高く評価されるだろう。

ありがとうございます!

答えて

1

receiver.elは、私は私はあなたが何を見ているが、Webサーバとしてelnodeやトンネルなどbeame-insta-sslを使用していると信じて何を達成するために書いたEmacsのライブラリです。 beame-insta-sslの代わりにngrokを使用するように変更するのは簡単でしょうし、その効果に対するプルリクエストは歓迎されます。

1

例では、本体がJSONドキュメントであるHTTPリクエストを含む文字列があります。あなたは、間違いなく正規表現を使って自分自身を解析したくありません。

このような状況では、まず、適切なライブラリを使用してHTTPリクエストを解析し、結果から本文を取得し(ライブラリのメソッド呼び出しを使用して)、JSONドキュメントを別のものを使用して解析します適切なライブラリ。

私はGitHubからのWebhookコールを受け取るためにこれをClojureで行っていますが、私はこの種のものでEmacsを使ったことはありません。

HTTP要求パーサーとJSONパーサーのクイック検索では、https://tkf.github.io/emacs-request/http://tess.oconnor.cx/2006/03/json.elが返されました。多分彼らはあなたのために便利です。

+0

こんにちはステファン、思いやりのある応答に感謝します。私の理解は、単純なPOSTリクエストの場合と同様に、 'emacs-web-server'はリクエスト解析を実際に行うべきです。私は、一般的なlispオブジェクトシステムに特に精通していませんが、ペイロードにアクセスするためのインタフェースが '保留中 'のスロットを経由することは奇妙に思えます。 – AesopHimself

関連する問題