lib/kameleoon/targeting/conditions/page_url_condition.rb
# frozen_string_literal: true require 'kameleoon/data/manager/data_map_storage' require 'kameleoon/data/manager/page_view_visit' require_relative 'string_value_condition' module Kameleoon # @api private module Targeting # PageUrlCondition is a condition for checking url of a page class PageUrlCondition < StringValueCondition def initialize(json_condition) super(json_condition, json_condition['url']) end def check(page_view_visit_storage) return false unless page_view_visit_storage.is_a?(Kameleoon::DataManager::DataMapStorage) return !page_view_visit_storage.get(condition_value).nil? if operator == Operator::EXACT is_targeted = false page_view_visit_storage.enumerate do |visit| is_targeted = check_page_view_visit(visit) break if is_targeted end is_targeted end private def check_page_view_visit(visit) visit.is_a?(Kameleoon::DataManager::PageViewVisit) && check_targeting(visit.page_view.url) end end end end