Sha256: 30b35d43e948566f15b24371ec37397ebfe4e4959611400f20642de0592ef3fd

Contents?: true

Size: 1.74 KB

Versions: 27

Compression:

Stored size: 1.74 KB

Contents

require "set"

module ShopifyCLI
  module Tasks
    class UpdateDashboardURLS < ShopifyCLI::Task
      NGROK_REGEX = /https:\/\/([a-z0-9\-]+\.ngrok\.io)(.*)/

      def call(ctx, url:, callback_urls:)
        @ctx = ctx
        project = ShopifyCLI::Project.current
        api_key = project.env.api_key
        result = ShopifyCLI::PartnersAPI.query(ctx, "get_app_urls", apiKey: api_key)
        app = result["data"]["app"]

        constructed_urls = construct_redirect_urls(app["redirectUrlWhitelist"], url, callback_urls)

        return if already_updated(app, constructed_urls, url)

        ShopifyCLI::PartnersAPI.query(@ctx, "update_dashboard_urls", input: {
          applicationUrl: url,
          redirectUrlWhitelist: constructed_urls,
          apiKey: api_key,
        })

        @ctx.puts(@ctx.message("core.tasks.update_dashboard_urls.updated"))
      rescue
        @ctx.puts(@ctx.message("core.tasks.update_dashboard_urls.update_error", ShopifyCLI::TOOL_NAME))
        raise
      end

      def construct_redirect_urls(urls, new_url, callback_urls)
        new_urls = urls.map do |url|
          if (match = url.match(NGROK_REGEX))
            "#{new_url}#{match[2]}"
          else
            url
          end
        end
        callback_urls.each do |callback_url|
          if new_urls.grep(/#{new_url}#{callback_url}/).empty?
            new_urls.push("#{new_url}#{callback_url}")
          end
        end
        new_urls.uniq
      end

      private

      def already_updated(app, new_redirect_urls, new_url)
        current_url = app["applicationUrl"]
        current_redirect_urls = app["redirectUrlWhitelist"]
        current_url.match(new_url) &&
          Set.new(current_redirect_urls) == Set.new(new_redirect_urls)
      end
    end
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
shopify-cli-2.36.0 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.35.0 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.34.0 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.33.1 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.33.0 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.32.1 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.32.0 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.31.0 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.30.0 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.29.0 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.28.0 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.27.0 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.26.0 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.25.0 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.24.0 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.23.0 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.22.0 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.21.0 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.20.1 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.20.0 lib/shopify_cli/tasks/update_dashboard_urls.rb