class WebhooksController < ApplicationController skip_before_action :verify_authenticity_token def pictify result = Pictify::WebhookVerifier.verify( payload: request.raw_post, signature_header: request.headers['X-Pictify-Signature'], secret: ENV['PICTIFY_WEBHOOK_SECRET'] ) unless result[:valid] Rails.logger.error "Webhook verification failed: #{result[:error]}" return head :unauthorized end event = JSON.parse(request.raw_post) case event['event'] when 'render.completed' HandleRenderCompletedJob.perform_later(event['data']) when 'render.failed' HandleRenderFailedJob.perform_later(event['data']) end head :ok endend
# Use environment variablesexport PICTIFY_WEBHOOK_SECRET=whsec_abc123...# Or use a secrets manageraws secretsmanager get-secret-value --secret-id pictify/webhook-secret