Sha256: 97120507f5ae1a0b394520c3e65fa43a6ed4f94ecab8e5e6ece15e8f1d0106c3
Contents?: true
Size: 1.41 KB
Versions: 2
Compression:
Stored size: 1.41 KB
Contents
module DiscoApp::Concerns::SynchroniseWebhooksJob extend ActiveSupport::Concern # Ensure the webhooks registered with our shop are the same as those listed # in our application configuration. def perform(shopify_domain) # Get the full list of expected webhook topics. expected_topics = [:'app/uninstalled', :'shop/update'] + topics # Registered any webhooks that haven't been registered yet. (expected_topics - current_topics).each do |topic| ShopifyAPI::Webhook.create(topic: topic, address: webhooks_url, format: 'json') end # Remove any extraneous topics. current_webhooks.each do |webhook| unless expected_topics.include?(webhook.topic.to_sym) webhook.delete end end end protected # Return a list of additional webhook topics to listen for. This method # can be overridden in the application to provide a list of app-specific # webhooks that should be created during synchronisation. def topics [] end private # Return a list of currently registered topics. def current_topics current_webhooks.map(&:topic).map(&:to_sym) end # Return a list of current registered webhooks. def current_webhooks @current_webhooks ||= ShopifyAPI::Webhook.find(:all) end # Return the absolute URL to the webhooks endpoint. def webhooks_url DiscoApp::Engine.routes.url_helpers.webhooks_url end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
disco_app-0.6.4 | app/jobs/disco_app/concerns/synchronise_webhooks_job.rb |
disco_app-0.6.5 | app/jobs/disco_app/concerns/synchronise_webhooks_job.rb |