Add JSON API for webhook deliveries (#2785)
* Add JSON API for webhook deliveries * Extract sanitized_request method on Webhook::Delivery * Extract response_summary method on Webhook::Delivery
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
class Webhooks::DeliveriesController < ApplicationController
|
||||
include BoardScoped
|
||||
|
||||
before_action :ensure_admin
|
||||
before_action :set_webhook
|
||||
|
||||
def index
|
||||
respond_to do |format|
|
||||
format.json do
|
||||
set_page_and_extract_portion_from @webhook.deliveries.ordered.includes(event: [ :creator, { eventable: :card } ])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
def set_webhook
|
||||
@webhook = @board.webhooks.find(params[:webhook_id])
|
||||
end
|
||||
end
|
||||
@@ -44,6 +44,18 @@ class Webhook::Delivery < ApplicationRecord
|
||||
raise
|
||||
end
|
||||
|
||||
def sanitized_request
|
||||
if headers = request&.dig("headers")&.except("X-Webhook-Signature")
|
||||
{ headers: headers }
|
||||
end
|
||||
end
|
||||
|
||||
def response_summary
|
||||
if response.present?
|
||||
{ code: response[:code], error: response[:error] }
|
||||
end
|
||||
end
|
||||
|
||||
def failed?
|
||||
(errored? || completed?) && !succeeded?
|
||||
end
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
json.cache! delivery do
|
||||
json.(delivery, :id, :state)
|
||||
json.created_at delivery.created_at.utc
|
||||
json.updated_at delivery.updated_at.utc
|
||||
|
||||
json.request delivery.sanitized_request
|
||||
json.response delivery.response_summary
|
||||
|
||||
json.event delivery.event, partial: "webhooks/deliveries/event", as: :event
|
||||
end
|
||||
@@ -0,0 +1,15 @@
|
||||
json.cache! [ event, event.creator, event.eventable ] do
|
||||
json.(event, :id, :action)
|
||||
json.created_at event.created_at.utc
|
||||
|
||||
json.creator do
|
||||
json.id event.creator_id
|
||||
json.name event.creator.name
|
||||
end
|
||||
|
||||
json.eventable do
|
||||
json.type event.eventable_type
|
||||
json.id event.eventable_id
|
||||
json.url polymorphic_url(event.eventable)
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1 @@
|
||||
json.array! @page.records, partial: "webhooks/deliveries/delivery", as: :delivery
|
||||
Reference in New Issue
Block a user