public function testUrl() { $url = new Url('http://google.com'); $this->assertTrue($url->isValid()); $this->assertEquals('google.com', $url->getDomain()); $url = new Url('https://pp.vk.me/c7002/v7002853/1522b/Gr0bS1iavb8.jpg'); $this->assertTrue($url->isValid()); $this->assertEquals('pp.vk.me', $url->getDomain()); $url = new Url('https://saehdfkajsdhlf.mke/c7002/v7002853/1522b/Gr0bS1iavb8.jpg'); $this->assertFalse($url->isValid()); $url = new Url('https://saehdfkajsdhlf.mke/c7002/v7002853/1522b/Gr0bS1iavb8.jpg'); $this->assertFalse($url->isValid()); $url = new Url('ftp://pp.vk.me/c7002/v7002853/1522b/Gr0bS1iavb8.jpg'); $this->assertFalse($url->isValid()); }
public function run() { $downloadQueue = $this->runner->queueManager->getQueue('download'); $failedQueue = $this->runner->queueManager->getQueue('fail'); $doneQueue = $this->runner->queueManager->getQueue('done'); $tmp = sys_get_temp_dir(); while ($task = $downloadQueue->pop()) { $url = Url::fromJson($task); $curl = (new CurlRequest($url->getUrl()))->exec(); if ($curl->getHttpCode() !== 200) { if ($curl->getErrno()) { $url->error = $curl->getError(); } else { $url->error = "http status {$curl->getHttpCode()}"; } $failedQueue->push($url); continue; } if (!preg_match('@^image/(.+)$@', $curl->getContentType(), $m)) { $url->error = 'Not an image'; $failedQueue->push($url); continue; } $this->saveFile($curl, $url->extension ? false : $m[1], $tmp); $doneQueue->push($url); } }