class Webhook::PullCommentClient include Webhook::Client attr_accessor :webhook, :pull, :journal, :sender, :event, :action_type, :comment_json def initialize(webhook, pull, journal, sender, event, action_type='created', comment_json={}) @webhook = webhook @pull = pull.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, "number": @pull.gitea_number, "pull_request": JSON.parse(@pull.to_builder.target!), "comment": @journal.present? ? JSON.parse(@journal.to_builder.target!) : @comment_json, "project": JSON.parse(@pull.project.to_builder.target!), "sender": JSON.parse(@sender.to_builder.target!), "is_pull": true } payload_content.merge!({ "changes": @comment_json }) if @action_type == "edited" payload_content end end