/** * {@inheritdoc} */ public function handle(array $configuration, RuleInterface $rule) { $rule->setPriority((int) $configuration['priority']); $rule->setCategory($configuration['category']); $rule->setCapabilities($configuration['capabilities']); $this->handleConditions($configuration, $rule); }
function it_return_false_of_regexp_does_not_match(UserAgentToken $token, ConditionInterface $condition, RuleInterface $rule) { $token->__toString()->willReturn('Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.74 Safari/537.36 MRCHROME'); $condition->getValue()->willReturn('#AppleWebKitt(?:/(?P<webkit_version>\\d+[\\.\\d]+))#is'); $condition->getDynamicCapabilities()->shouldNotBeCalled()->willReturn(array('webkit_version')); $rule->getCapabilities()->willReturn(array('applewebkit' => true))->shouldNotBeCalled(); $rule->setCapabilities(Argument::exact(array('applewebkit' => true, 'webkit_version' => '537.36')))->shouldNotBeCalled(); $this->evaluate($token, $condition, $rule)->shouldReturn(false); }
function it_handle_configuration(RuleInterface $rule) { $configuration = array('priority' => 1, 'category' => 'browser', 'capabilities' => array('is_bot' => true), 'conditions' => array(array('type' => 'text', 'value' => 'chrome', 'strategy' => 'sequence', 'capabilities' => array('is_modile' => true)))); $rule->setPriority(Argument::exact($configuration['priority']))->shouldBeCalled(); $rule->setCategory(Argument::exact($configuration['category']))->shouldBeCalled(); $rule->setCapabilities(Argument::exact($configuration['capabilities']))->shouldBeCalled(); $rule->addCondition(Argument::type('DeviceDetectorIO\\DeviceDetector\\Rule\\Condition\\ConditionInterface'))->shouldBeCalled(); $this->handle($configuration, $rule); }
/** * {@inheritdoc} */ public function evaluate(TokenInterface $token, ConditionInterface $condition, RuleInterface $rule) { $matches = array(); if (preg_match($condition->getValue(), (string) $token, $matches)) { $dynamicCapabilitiesToMerge = array(); $dynamicCapabilities = $condition->getDynamicCapabilities(); if (!empty($dynamicCapabilities)) { foreach ($dynamicCapabilities as $matchKey) { if (isset($matches[$matchKey])) { $dynamicCapabilitiesToMerge[$matchKey] = $matches[$matchKey]; } } } $rule->setCapabilities(array_merge($dynamicCapabilitiesToMerge, $rule->getCapabilities())); return true; } return false; }