Sha256: ca9c8d830f8d8bd3ab62a7779525cb73ebeb9e5ff6096133597d587a967ea9bd

Contents?: true

Size: 1.8 KB

Versions: 65

Compression:

Stored size: 1.8 KB

Contents

require 'rails/generators/base'

module ShopifyApp
  module Generators
    class AddWebhookGenerator < Rails::Generators::Base
      source_root File.expand_path('../templates', __FILE__)
      class_option :topic, type: :string, aliases: "-t", required: true
      class_option :address, type: :string, aliases: "-a", required: true

      hook_for :test_framework, as: :job, in: :rails do |instance, generator|
        instance.invoke generator, [ instance.send(:job_file_name) ]
      end

      def init_webhook_config
        initializer = load_initializer
        return if initializer.include?("config.webhooks")

        inject_into_file(
          'config/initializers/shopify_app.rb',
          "  config.webhooks = [\n  ]\n",
          before: 'end'
        )
      end

      def inject_webhook_to_shopify_app_initializer
        inject_into_file(
          'config/initializers/shopify_app.rb',
          webhook_config,
          after: "config.webhooks = ["
        )

        initializer = load_initializer

        unless initializer.include?(webhook_config)
          shell.say "Error adding webhook to config. Add this line manually: #{webhook_config}", :red
        end
      end

      def add_webhook_job
        @job_file_name = job_file_name + '_job'
        @job_class_name  = @job_file_name.classify
        template 'webhook_job.rb', "app/jobs/#{@job_file_name}.rb"
      end

      private

      def job_file_name
        address.split('/').last
      end

      def load_initializer
        File.read(File.join(destination_root, 'config/initializers/shopify_app.rb'))
      end

      def webhook_config
        "\n    {topic: '#{topic}', address: '#{address}', format: 'json'},"
      end

      def topic
        options['topic']
      end

      def address
        options['address']
      end
    end
  end
end

Version data entries

65 entries across 65 versions & 1 rubygems

Version Path
shopify_app-13.0.0 lib/generators/shopify_app/add_webhook/add_webhook_generator.rb
shopify_app-12.0.7 lib/generators/shopify_app/add_webhook/add_webhook_generator.rb
shopify_app-12.0.6 lib/generators/shopify_app/add_webhook/add_webhook_generator.rb
shopify_app-12.0.5 lib/generators/shopify_app/add_webhook/add_webhook_generator.rb
shopify_app-12.0.4 lib/generators/shopify_app/add_webhook/add_webhook_generator.rb
shopify_app-12.0.3 lib/generators/shopify_app/add_webhook/add_webhook_generator.rb
shopify_app-12.0.2 lib/generators/shopify_app/add_webhook/add_webhook_generator.rb
shopify_app-12.0.1 lib/generators/shopify_app/add_webhook/add_webhook_generator.rb
shopify_app-12.0.0 lib/generators/shopify_app/add_webhook/add_webhook_generator.rb
shopify_app-11.7.1 lib/generators/shopify_app/add_webhook/add_webhook_generator.rb
shopify_app-11.7.0 lib/generators/shopify_app/add_webhook/add_webhook_generator.rb
shopify_app-11.6.0 lib/generators/shopify_app/add_webhook/add_webhook_generator.rb
shopify_app-11.5.1 lib/generators/shopify_app/add_webhook/add_webhook_generator.rb
shopify_app-11.5.0 lib/generators/shopify_app/add_webhook/add_webhook_generator.rb
shopify_app-11.4.0 lib/generators/shopify_app/add_webhook/add_webhook_generator.rb
shopify_app-11.3.2 lib/generators/shopify_app/add_webhook/add_webhook_generator.rb
shopify_app-11.3.1 lib/generators/shopify_app/add_webhook/add_webhook_generator.rb
shopify_app-11.3.0 lib/generators/shopify_app/add_webhook/add_webhook_generator.rb
shopify_app-11.2.0 lib/generators/shopify_app/add_webhook/add_webhook_generator.rb
shopify_app-11.1.0 lib/generators/shopify_app/add_webhook/add_webhook_generator.rb