Sha256: 2305a4ffc581961c5950a177d3ba39e5f0012b4ee4605ee3cffa1dbaf819d3f7
Contents?: true
Size: 1.3 KB
Versions: 7
Compression:
Stored size: 1.3 KB
Contents
module ShopifyApp class WebhooksManager class CreationFailed < StandardError; end def self.queue(shop_domain, shop_token) ShopifyApp::WebhooksManagerJob.perform_later(shop_domain: shop_domain, shop_token: shop_token) end def recreate_webhooks! destroy_webhooks create_webhooks end def create_webhooks return unless required_webhooks.present? required_webhooks.each do |webhook| create_webhook(webhook) unless webhook_exists?(webhook[:topic]) end end def destroy_webhooks ShopifyAPI::Webhook.all.each do |webhook| ShopifyAPI::Webhook.delete(webhook.id) if is_required_webhook?(webhook) end @current_webhooks = nil end private def required_webhooks ShopifyApp.configuration.webhooks end def is_required_webhook?(webhook) required_webhooks.map{ |w| w[:address] }.include? webhook.address end def create_webhook(attributes) attributes.reverse_merge!(format: 'json') webhook = ShopifyAPI::Webhook.create(attributes) raise CreationFailed unless webhook.persisted? webhook end def webhook_exists?(topic) current_webhooks[topic] end def current_webhooks @current_webhooks ||= ShopifyAPI::Webhook.all.index_by(&:topic) end end end
Version data entries
7 entries across 7 versions & 1 rubygems