Sha256: 70f4b645a1b889c40623df8ce3cc0114e16b62e3a1813dfe939eced4e6fb4e78

Contents?: true

Size: 1.66 KB

Versions: 27

Compression:

Stored size: 1.66 KB

Contents

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

      def call(ctx, url:, callback_url:)
        @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"]
        consent = check_application_url(app["applicationUrl"], url)
        constructed_urls = construct_redirect_urls(app["redirectUrlWhitelist"], url, callback_url)
        return if url == app["applicationUrl"]
        ShopifyCLI::PartnersAPI.query(@ctx, "update_dashboard_urls", input: {
          applicationUrl: consent ? url : app["applicationUrl"],
          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 check_application_url(application_url, new_url)
        return false if application_url.match(new_url)
        CLI::UI::Prompt.confirm(@ctx.message("core.tasks.update_dashboard_urls.update_prompt"))
      end

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

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
shopify-cli-2.15.2 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.15.1 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.15.0 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.14.0 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.13.0 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.12.0 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.11.2 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.11.1 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.11.0 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.10.2 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.10.1 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.10.0 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.9.0 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.8.0 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.7.4 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.7.3 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.7.2 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.7.1 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.7.0 lib/shopify_cli/tasks/update_dashboard_urls.rb
shopify-cli-2.6.6 lib/shopify_cli/tasks/update_dashboard_urls.rb