getHttpClient()->get( // Reason for the path check is because it is unnecessary on the Daemon but we need // to respect the interface. sprintf('/api/servers/%s/files/list/%s', $this->getServer()->uuid, $path === '/' ? '' : $path) ); return json_decode($response->getBody(), true); } /** * Creates a new directory for the server in the given $path. * * @param string $name * @param string $path * @return \Psr\Http\Message\ResponseInterface */ public function createDirectory(string $name, string $path): ResponseInterface { return $this->getHttpClient()->post( sprintf('/api/servers/%s/files/create-directory', $this->getServer()->uuid), [ 'json' => [ 'name' => $name, 'path' => $path, ], ] ); } /** * Renames or moves a file on the remote machine. * * @param string $from * @param string $to * @return \Psr\Http\Message\ResponseInterface */ public function renameFile(string $from, string $to): ResponseInterface { return $this->getHttpClient()->put( sprintf('/api/servers/%s/files/rename', $this->getServer()->uuid), [ 'json' => [ 'rename_from' => $from, 'rename_to' => $to, ], ] ); } /** * Copy a given file and give it a unique name. * * @param string $location * @return \Psr\Http\Message\ResponseInterface */ public function copyFile(string $location): ResponseInterface { return $this->getHttpClient()->post( sprintf('/api/servers/%s/files/copy', $this->getServer()->uuid), [ 'json' => [ 'location' => $location, ], ] ); } /** * Delete a file or folder for the server. * * @param string $location * @return \Psr\Http\Message\ResponseInterface */ public function deleteFile(string $location): ResponseInterface { return $this->getHttpClient()->post( sprintf('/api/servers/%s/files/delete', $this->getServer()->uuid), [ 'json' => [ 'location' => $location, ], ] ); } }