Exemple #1
0
 /**
  * @inheritdoc
  */
 public function getProtocolSchemeForUrl($url)
 {
     // Set the default result.
     $result = $this->getDefaultProtocolScheme();
     // Lazy compile the patterns.
     if (is_null($this->compiledProtocolSchemeMap)) {
         // Retrieve raw patterns from subclass.
         $this->compiledProtocolSchemeMap = $this->getRawProtocolSchemeMap();
         // Compile all wildcard patterns into regular expressions.
         foreach ($this->compiledProtocolSchemeMap as $index => $entry) {
             $this->compiledProtocolSchemeMap[$index]['compiled-pattern'] = isset($entry['regex']) && $entry['regex'] ? $entry['pattern'] : UrlUtilities::compileWildcardUrl(trim($entry['pattern'], '/'));
         }
     }
     // Now look for the match to the given URL.
     foreach ($this->compiledProtocolSchemeMap as $entry) {
         if (preg_match($entry['compiled-pattern'], $url)) {
             $result = $entry['protocol'];
         }
     }
     return $result;
 }
 public function testWildcardUrlToRegex()
 {
     $this->assertEquals(1, preg_match(UrlUtilities::compileWildcardUrl('?'), '/'));
     $this->assertEquals(0, preg_match(UrlUtilities::compileWildcardUrl('?'), '/foo'));
     $this->assertEquals(1, preg_match(UrlUtilities::compileWildcardUrl('??'), '/'));
     $this->assertEquals(0, preg_match(UrlUtilities::compileWildcardUrl('??'), '/foo'));
     $this->assertEquals(1, preg_match(UrlUtilities::compileWildcardUrl('???'), '/'));
     $this->assertEquals(1, preg_match(UrlUtilities::compileWildcardUrl('???'), '/foo'));
     $this->assertEquals(1, preg_match(UrlUtilities::compileWildcardUrl('????'), '/'));
     $this->assertEquals(1, preg_match(UrlUtilities::compileWildcardUrl('????'), '/foo'));
     $this->assertEquals(1, preg_match(UrlUtilities::compileWildcardUrl('/root*'), '/root'));
     $this->assertEquals(1, preg_match(UrlUtilities::compileWildcardUrl('/root*'), '/root/'));
     $this->assertEquals(1, preg_match(UrlUtilities::compileWildcardUrl('/root*'), '/root/foo'));
     $this->assertEquals(1, preg_match(UrlUtilities::compileWildcardUrl('/root*'), '/root/foo/bar'));
     $this->assertEquals(1, preg_match(UrlUtilities::compileWildcardUrl('/root*'), '/root-with-suffix'));
     $this->assertEquals(0, preg_match(UrlUtilities::compileWildcardUrl('/root*'), '/'));
     $this->assertEquals(0, preg_match(UrlUtilities::compileWildcardUrl('/root*'), '/foo'));
     $this->assertEquals(0, preg_match(UrlUtilities::compileWildcardUrl('/root*'), '/foo/bar'));
     $this->assertEquals(1, preg_match(UrlUtilities::compileWildcardUrl('/'), '/'));
     $this->assertEquals(0, preg_match(UrlUtilities::compileWildcardUrl('/'), '/foo/bar'));
     $this->assertEquals(1, preg_match(UrlUtilities::compileWildcardUrl('/foo/bar'), '/foo/bar'));
     $this->assertEquals(0, preg_match(UrlUtilities::compileWildcardUrl('/foo/bar'), '/'));
     $this->assertEquals(1, preg_match(UrlUtilities::compileWildcardUrl('!'), '/'));
     $this->assertEquals(1, preg_match(UrlUtilities::compileWildcardUrl('!'), '/foo'));
     $this->assertEquals(1, preg_match(UrlUtilities::compileWildcardUrl('!'), '/foo/bar'));
     $this->assertEquals(1, preg_match(UrlUtilities::compileWildcardUrl('/root!'), '/root'));
     $this->assertEquals(1, preg_match(UrlUtilities::compileWildcardUrl('/root!'), '/root/'));
     $this->assertEquals(1, preg_match(UrlUtilities::compileWildcardUrl('/root!'), '/root/foo'));
     $this->assertEquals(1, preg_match(UrlUtilities::compileWildcardUrl('/root!'), '/root/foo/bar'));
     $this->assertEquals(0, preg_match(UrlUtilities::compileWildcardUrl('/root!'), '/'));
     $this->assertEquals(0, preg_match(UrlUtilities::compileWildcardUrl('/root!'), '/foo'));
     $this->assertEquals(0, preg_match(UrlUtilities::compileWildcardUrl('/root!'), '/foo/bar'));
 }