Example #1
0
 /**
  * Turn this item object into a generic array
  *
  * @return array
  */
 public function transform(File $file = null)
 {
     if ($file === null) {
         return [];
     }
     return ['id' => (int) $file->getId(), 'mimeType' => $file->getMimeType(), 'size' => $file->getSize(), 'name' => $file->getName(), 'uri' => $file->getUri()];
 }
Example #2
0
 public function consolidate($packageCode, $user, $name = '')
 {
     $processedFiles = [];
     $temporalPackage = unserialize($this->redis->get($packageCode));
     $files = $temporalPackage->getFiles();
     // Create Package
     $package = new Package();
     $package->setCode($packageCode)->setCreatedAt(new \DateTime())->setSize(0)->setUser($user)->setName($name)->setFrozen(Package::NOT_FROZEN);
     // Calculate Short Code
     $i = 0;
     do {
         $shortCode = substr($packageCode, $i, 6);
     } while ($this->doctrine->getManager()->getRepository('AppBundle:Package')->shortCodeExists($shortCode));
     $package->setShortCode($shortCode);
     foreach ($files as $temporalFile) {
         $file = new File();
         $file->setSize(filesize($this->temporalDir . '/' . $packageCode . '-' . $temporalFile->getHash() . '.obj'))->setHash($temporalFile->getHash())->setName($temporalFile->getName())->setPackage($package);
         $package->setSize($package->getSize() + $file->getSize());
         try {
             $uploader = new MultipartUploader($this->s3Client, $this->temporalDir . '/' . $packageCode . '-' . $temporalFile->getHash() . '.obj', ['bucket' => $this->bucket, 'key' => $file->getUri()]);
             $uploader->upload();
             $processedFiles[$temporalFile->getName()] = true;
             $this->doctrine->getManager()->persist($file);
             unlink($this->temporalDir . '/' . $packageCode . '-' . $temporalFile->getHash() . '.obj');
         } catch (MultipartUploadException $e) {
             $processedFiles[$temporalFile->getName()] = $e->getMessage();
         }
     }
     $this->doctrine->getManager()->persist($package);
     $this->doctrine->getManager()->flush();
     $this->redis->del($packageCode);
     return $processedFiles;
 }