コード例 #1
0
ファイル: UrlTest.php プロジェクト: s1lent1um/traktor
 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());
 }
コード例 #2
0
ファイル: Download.php プロジェクト: s1lent1um/traktor
 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);
     }
 }