private function mcCacheProps($filePath, $device, $channel) { $mc = Flight::mc(); $cache = $mc->get($filePath); if (!$cache && Memcached::RES_NOTFOUND == $mc->getResultCode()) { $buildpropArray = explode("\n", file_get_contents('zip://' . $filePath . '#system/build.prop')); if ($device == $this->getBuildPropValue($buildpropArray, 'ro.product.device')) { $api_level = intval($this->getBuildPropValue($buildpropArray, 'ro.build.version.sdk')); $incremental = $this->getBuildPropValue($buildpropArray, 'ro.build.version.incremental'); $timestamp = intval($this->getBuildPropValue($buildpropArray, 'ro.build.date.utc')); $url = $this->getBuildPropValue($buildpropArray, 'ro.build.ota.url'); $cache = array($device, $api_level, $incremental, $timestamp, Utils::getMD5($filePath), $url); $mc->set($filePath, $cache); $mc->set($incremental, array($device, $channel, $filePath)); } else { throw new Exception("{$device}: {$filePath} is in invalid path"); } } assert($cache[0] == $device); $this->api_level = $cache[1]; $this->incremental = $cache[2]; $this->timestamp = $cache[3]; $this->md5sum = $cache[4]; $this->url = $cache[5]; }
private function mcCacheProps($filePath, $device, $channel) { $mc = Flight::mc(); $cache = $mc->get($filePath); if (true) { $buildpropArray = explode("\n", file_get_contents($filePath . '.build.prop')); if ($device == $this->getBuildPropValue($buildpropArray, 'ro.product.device') || $device == $this->getBuildPropValue($buildpropArray, 'ro.cm.device')) { $api_level = intval($this->getBuildPropValue($buildpropArray, 'ro.build.version.sdk')); $incremental = $this->getBuildPropValue($buildpropArray, 'ro.build.version.incremental'); $timestamp = intval($this->getBuildPropValue($buildpropArray, 'ro.build.date.utc')); if (file_exists($filePath . '.url')) { $url = explode("\n", file_get_contents($filePath . '.url'))[0]; } else { $url = 'https://' . $_SERVER['HTTP_HOST'] . '/_builds/' . explode("/", $filePath)[4]; } $cache = array($device, $api_level, $incremental, $timestamp, Utils::getMD5($filePath), $url); $mc->set($filePath, $cache); $mc->set($incremental, array($device, $channel, $filePath)); } else { throw new Exception("{$device}: {$filePath} is in invalid path"); } } assert($cache[0] == $device); $this->api_level = $cache[1]; $this->incremental = $cache[2]; $this->timestamp = $cache[3]; $this->md5sum = $cache[4]; $this->url = $cache[5]; }
public static function mcFind($incremental) { $mc = Flight::mc(); list($device, $channel, $zip) = $mc->get($incremental); if ($zip && !file_exists($zip)) { $mc->delete($zip); $mc->delete($incremental); $zip = NULL; $channel = NULL; $device = NULL; } return array($device, $channel, $zip); }