The SFS Client is a PHP library for communicating with a StretchFS server to manage content and jobs. It leverages GuzzleHttp for HTTP requests, providing a simple interface for file uploads, downloads, and job management.
Install the package via Composer:
composer require meisam-mulla/sfs-clientFirst, include the SFS Client in your project:
use MeisamMulla\SfsClient\StretchFS;Initialize the client with your server's configuration:
$client = new StretchFS([
'username' => 'your_username', // optional if you have a token
'password' => 'your_password', // optional if you have a token
'domain' => 'sfsserver.net', // SFS server
'port' => 8161, // Default port
'token' => 'your_token', // If you already have a token
]);Generate a new token:
$token = $client->generateToken();Destroy a token:
$client->destroyToken(token: 'iu23gn43g2i4i');Create a folder:
$client->folderCreate(folderPath: '/test');Delete a folder:
$client->folderDelete(folderPath: '/test');List all files in a directory:
$client->fileList(folderPath: '/');Upload a file from path
$client->fileUpload(filePath: '/home/user/somefile.txt', folderPath: '/');Upload a file from string
$client->fileUploadFromString(filePath: '/text.txt', contents: 'contents of text.txt');Download a file
$contents = $client->fileDownload(filePath: '/text.txt');Stream a file
$stream = $client->fileDownloadStream(filePath: '/text.txt');Get file details
$contents = $client->fileDetail(filePath: '/text.txt');Delete a file
$client->fileDelete(filePath: '/text.txt');Generate url for temporary download
$response = $client->fileDownloadUrl(filePath: '/text.txt', seconds: 3600);Create a job
$job = $client->jobCreate(description: [
"callback" => [
'request' => [
'method' => 'GET',
'url' => "http://some.url/job.complete",
],
],
"resource" => [
[
"name" => 'somefile.zip',
"request" => [
"method" => "GET",
"url" => "https://url.to/file.zip",
]
]
]
], priority: 12, category: 'ingest');Update a job
$client->jobUpdate(handle: '5sE4674U4ft2', changes: [
"resource" => [
[
"name" => 'somefile.zip',
"request" => [
"method" => "GET",
"url" => "https://url.to/file.zip",
]
]
]
]);Start a job
$client->jobStart(handle: 'FQukh4sIMN4F');Get job details
$client->jobDetail(handle: 'FQukh4sIMN4F');Abort a job
$client->jobAbort(handle: 'FQukh4sIMN4F');Retry a job
$client->jobRetry(handle: 'FQukh4sIMN4F');Delete a job
$client->jobRemove(handle: 'FQukh4sIMN4F');Check if content exists in a job temporary directory
$client->jobContentExists(handle: 'FQukh4sIMN4F', file: 'file.zip');