class Webhook::IssueCommentClient include Webhook::Client attr_accessor :webhook, :issue, :journal, :sender, :event, :action_type, :comment_json def initialize(webhook, issue, journal, sender, event, action_type, comment_json={}) @webhook = webhook @issue = issue.reload @journal = journal.present? ? journal.reload : nil @sender = sender.reload @event = event @action_type = action_type @comment_json = comment_json # 构建client参数 super({ uuid: SecureRandom.uuid, event: @event, webhook: @webhook, payload_content: payload_content }) end private def payload_content payload_content = { "action": @action_type, "issue": JSON.parse(@issue.to_builder.target!), "journal": @journal.present? ? JSON.parse(@journal.to_builder.target!) : @comment_json, "project": JSON.parse(@issue.project.to_builder.target!), "sender": JSON.parse(@sender.to_builder.target!), "is_pull": false } payload_content.merge!({ "changes": @comment_json, }) if @action_type == "edited" payload_content end end