# frozen_string_literal: true

module Onebox
  module Engine
    class GooglePlayAppOnebox
      include Engine
      include LayoutSupport
      include HTML

      DEFAULTS = { MAX_DESCRIPTION_CHARS: 500 }

      matches_regexp(%r{^https?://play\.(?:(?:\w)+\.)?(google)\.com(?:/)?/store/apps/})
      always_https

      private

      def data
        price =
          begin
            raw.css("meta[itemprop=price]").first["content"]
          rescue StandardError
            "Free"
          end
        {
          link: link,
          title:
            raw.css("meta[property='og:title']").first["content"].gsub(
              " - Apps on Google Play",
              "",
            ),
          image:
            ::Onebox::Helpers.normalize_url_for_output(
              raw.css("meta[property='og:image']").first["content"],
            ),
          description:
            raw.css("meta[name=description]").first["content"][
              0..DEFAULTS[:MAX_DESCRIPTION_CHARS]
            ].chop + "...",
          price: price == "0" ? "Free" : price,
        }
      end
    end
  end
end
