class Webhook::Client

Overview

webhook URL へ JSON を POST する。

Slack と Discord のアダプタは投稿の組み立て方こそ違うが、「webhook URL に JSON を POST し、一時的な失敗は再送する」点は同じで、再送の判断と待機が 二重に書かれていた(issue #123)。片方だけ直すと挙動がずれるため、送信そのものは ここにまとめ、アダプタは投稿の組み立てに専念する。

Defined in:

webhook/client.cr

Constant Summary

MAX_RETRY_WAIT = 5.seconds
MAX_SEND_ATTEMPTS = 3

Constructors

Instance Method Summary

Constructor Detail

def self.new(service : String, url : String) #

service はエラーメッセージに出す送信先の名前。


[View source]

Instance Method Detail

def post(body : String) #

送信できたら戻り、恒久的に失敗したら例外にする。

呼び出し側は投稿の成功を前提に通知を既読化する。応答を見ずに成功扱いにすると、 投稿されていない通知まで既読化され、どこにも表示されないまま消える(issue #120)。 よって失敗は握りつぶさず例外にし、既読化を止めて次回実行に委ねる。


[View source]