Flysystem adapter for Nuxeo
- Tests Units
- PHP 7 version
composer require ak1r0/flysystem-nuxeo
$config = array(
'url' => 'https://host/nuxeo',
'username' => 'root',
'password' => 'root',
'baseRepository' => '/default-domain/workspaces/myWorkspace/'
)
$client = new \Nuxeo\Client\Api\NuxeoClient($config['url'], $config['username'], $config['password']);
$nuxeoAdapter = new \Ak1r0\Flysystem\Adapter\Nuxeo($client);
$nuxeoAdapter->setPathPrefix($config['baseRepository']);
$filesystem = new \League\Flysystem\Filesystem($nuxeoAdapter);
$filesystem->addPlugin(new \Ak1r0\Flysystem\Plugin\UidResolverPlugin($nuxeoAdapter));
$filesystem->addPlugin(new \Ak1r0\Flysystem\Plugin\MimetypeConverterPlugin($nuxeoAdapter));
$filesystem->addPlugin(new \Ak1r0\Flysystem\Plugin\ConcatenatorPlugin($nuxeoAdapter));
// Read
$filesystem->read($path): string; // The file content
$filesystem->readStream($path): string; // The file content
// Write
$filesystem->write(string $path, string $content): bool;
// Write Stream
$handle = fopen($pathToNewContent, 'r');
$filesystem->writeStream(string $path, resource $handle): bool;
// Create Dir
$filesystem->createDir(string $dirname, \League\Flysystem\Config $config): array; // return ['path' => '/path/to/dir/', 'type' => 'dir'];
// Update
$filesystem->update(string $path, string $content): bool;
// Update Stream
$handle = fopen($pathToNewContent, 'r');
$filesystem->updateStream(string $path, resource $handle): bool;
// Rename
$filesystem->rename(string $path, string $newName): bool;
// Copy
$filesystem->copy(string $fromPath, string $toPath): bool;
// Delete
$filesystem->delete(string $path): bool;
$filesystem->deleteDir(string $dirPath): bool;
$filesystem->getMetadata($path): array;
/*
return [
'type' => 'file', // string
'path' => '/path/to/doc/', // string
'dirname' => 'dir', // string
'timestamp' => 123456, // int
'size' => 500, // int
'mimetype' => 'application/pdf', // string
'uid' => 'f4e22103-2540-46e8-8ed6-2a78586bd2e3', // string - only for writes methods
];
*/
Flysystem works using paths but one best pratice with Nuxeo is to use uids
$uid = 'f4e22103-2540-46e8-8ed6-2a78586bd2e3';
$filesystem->resolveUid(string $uid): string; // return '/path/to/doc/';
$filesystem->convert(string $path, string $mimeType): array;
/*
return [
'type' => 'file', // string
'path' => '/path/to/doc/', // string
'dirname' => 'dir', // string
'timestamp' => 123456, // int
'size' => 500, // int
'mimetype' => 'application/pdf', // string
'contents' => '...' // string the file content
];
*/
$filesystem->concatenate(array [$path, $path1, $path2]): array;
For this case nuxeo also implements a faster way using uids
$normalisedArray = $filesystem->concatenate(array [$uid, $uid1, $uid2], bool true): array;
Boths cases return this array
[
'type' => 'file', // string
'path' => '/path/to/doc/', // string
'dirname' => 'dir', // string
'timestamp' => 123456, // int
'size' => 500, // int
'mimetype' => 'application/pdf', // string
'contents' => '...' // string the file content
];