Esempio n. 1
0
 /**
  * Returns a listing of all files and folders within a specified Scales directory.
  *
  * @param  string $directory
  * @return object
  */
 public function returnDirectoryListing($directory)
 {
     if (empty($directory)) {
         throw new Exception('A valid directory must be specified in order to list its contents.');
     }
     $res = $this->client->request('GET', '/server/directory/' . rawurlencode($directory), ['headers' => $this->headers]);
     $json = json_decode($res->getBody());
     if ($res->getStatusCode() !== 200) {
         throw new DisplayException('An error occured while attempting to save this file. ' . $res->getBody());
     }
     // Iterate through results
     $files = [];
     $folders = [];
     foreach ($json as &$value) {
         if ($value->directory === true) {
             // @TODO Handle Symlinks
             $folders = array_merge($folders, [['entry' => $value->name, 'directory' => trim($directory, '/'), 'size' => null, 'date' => strtotime($value->modified)]]);
         } else {
             if ($value->file === true) {
                 $files = array_merge($files, [['entry' => $value->name, 'directory' => trim($directory, '/'), 'extension' => pathinfo($value->name, PATHINFO_EXTENSION), 'size' => HelperRepository::bytesToHuman($value->size), 'date' => strtotime($value->modified)]]);
             }
         }
     }
     return (object) ['files' => $files, 'folders' => $folders];
 }