Overview

Namespaces

  • Peridot
    • WebDriverManager
      • Binary
        • Decompression
        • Request
      • Console
      • Event
      • OS
      • Process
      • Test
  • PHP

Classes

  • AbstractBinary
  • BinaryResolver
  • ChromeDriver
  • CompressedBinary
  • IEDriver
  • SeleniumStandalone

Interfaces

  • BinaryInterface
  • BinaryResolverInterface
  • DriverInterface
  • Overview
  • Namespace
  • Class
  • Tree
  1: <?php
  2: namespace Peridot\WebDriverManager\Binary;
  3: 
  4: /**
  5:  * AbstractBinary is a base class for all binaries and drivers.
  6:  *
  7:  * @package Peridot\WebDriverManager\Binary
  8:  */
  9: abstract class AbstractBinary implements BinaryInterface
 10: {
 11:     /**
 12:      * @var string
 13:      */
 14:     protected $contents;
 15: 
 16:     /**
 17:      * @var BinaryResolverInterface
 18:      */
 19:     protected $resolver;
 20: 
 21:     /**
 22:      * @param BinaryResolverInterface $resolver
 23:      */
 24:     public function __construct(BinaryResolverInterface $resolver)
 25:     {
 26:         $this->resolver = $resolver;
 27:     }
 28: 
 29:     /**
 30:      * {@inheritdoc}
 31:      *
 32:      * @return bool
 33:      */
 34:     public function fetch()
 35:     {
 36:         $this->contents = $this->resolver->request($this->getUrl());
 37:         return $this->contents !== false;
 38:     }
 39: 
 40:     /**
 41:      * {@inheritdoc}
 42:      *
 43:      * @param string $directory
 44:      * @return bool
 45:      */
 46:     public function save($directory)
 47:     {
 48:         if ($this->exists($directory)) {
 49:             return true;
 50:         }
 51: 
 52:         if (! $this->contents) {
 53:             return false;
 54:         }
 55: 
 56:         $output = $this->getDestination($directory);
 57:         $this->removeOldVersions($directory);
 58:         return file_put_contents($output, $this->contents) !== false;
 59:     }
 60: 
 61:     /**
 62:      * {@inheritdoc}
 63:      *
 64:      * @param string $directory
 65:      * @return bool
 66:      */
 67:     public function fetchAndSave($directory)
 68:     {
 69:         if ($this->exists($directory)) {
 70:             return true;
 71:         }
 72: 
 73:         return $this->fetch() && $this->save($directory);
 74:     }
 75: 
 76:     /**
 77:      * {@inheritdoc}
 78:      *
 79:      * @return string
 80:      */
 81:     public function getContents()
 82:     {
 83:         return $this->contents;
 84:     }
 85: 
 86:     /**
 87:      * {@inheritdoc}
 88:      *
 89:      * @param $directory
 90:      * @return bool
 91:      */
 92:     public function exists($directory)
 93:     {
 94:         return file_exists($this->getDestination($directory));
 95:     }
 96: 
 97:     /**
 98:      * {@inheritdoc}
 99:      *
100:      * @param $directory
101:      * @return bool
102:      */
103:     public function isOutOfDate($directory)
104:     {
105:         if ($this->exists($directory)) {
106:             return false;
107:         }
108: 
109:         $pattern = $this->getOldFilePattern($directory);
110:         $matches = glob($pattern);
111: 
112:         return count($matches) > 0;
113:     }
114: 
115:     /**
116:      * {@inheritdoc}
117:      *
118:      * @return bool
119:      */
120:     public function isSupported()
121:     {
122:         return true;
123:     }
124: 
125:     /**
126:      * Get the destination file for the binary.
127:      *
128:      * @param $directory
129:      * @return string
130:      */
131:     protected function getDestination($directory)
132:     {
133:         return "$directory/{$this->getFileName()}";
134:     }
135: 
136:     /**
137:      * Remove old versions of the binary.
138:      *
139:      * @param $directory
140:      * @return void
141:      */
142:     protected function removeOldVersions($directory)
143:     {
144: 
145:     }
146: 
147:     /**
148:      * Return a pattern to identify old versions of a binary.
149:      *
150:      * @param string $directory
151:      * @return string
152:      */
153:     abstract protected function getOldFilePattern($directory);
154: }
155: 
WebDriver Manager API documentation generated by ApiGen