Complete implementation of new Server model.

This commit is contained in:
Dane Everitt 2017-02-02 19:41:38 -05:00
parent 644ee85f59
commit 3114b7e52a
No known key found for this signature in database
GPG key ID: EEA66103B3D71F53
10 changed files with 170 additions and 202 deletions

View file

@ -40,28 +40,6 @@ class FileRepository
*/
protected $server;
/**
* The Eloquent Model for the node corresponding with the requested server.
*
* @var \Illuminate\Database\Eloquent\Model
*/
protected $node;
/**
* The Guzzle Client associated with the requested server and node.
*
* @var \GuzzleHttp\Client
*/
protected $client;
/**
* The Guzzle Client headers associated with the requested server and node.
* (non-administrative headers).
*
* @var array
*/
protected $headers;
/**
* Constructor.
*
@ -69,10 +47,7 @@ class FileRepository
*/
public function __construct($uuid)
{
$this->server = Server::getByUUID($uuid);
$this->node = Node::getByID($this->server->node);
$this->client = Node::guzzleRequest($this->server->node);
$this->headers = Server::getGuzzleHeaders($uuid);
$this->server = Server::byUuid($uuid);
}
/**
@ -88,12 +63,9 @@ class FileRepository
}
$file = (object) pathinfo($file);
$file->dirname = (in_array($file->dirname, ['.', './', '/'])) ? null : trim($file->dirname, '/') . '/';
$res = $this->client->request('GET', '/server/file/stat/' . rawurlencode($file->dirname . $file->basename), [
'headers' => $this->headers,
]);
$res = $this->server->guzzleClient()->request('GET', '/server/file/stat/' . rawurlencode($file->dirname . $file->basename));
$stat = json_decode($res->getBody());
if ($res->getStatusCode() !== 200 || ! isset($stat->size)) {
@ -108,9 +80,7 @@ class FileRepository
throw new DisplayException('That file is too large to open in the browser, consider using a SFTP client.');
}
$res = $this->client->request('GET', '/server/file/f/' . rawurlencode($file->dirname . $file->basename), [
'headers' => $this->headers,
]);
$res = $this->server->guzzleClient()->request('GET', '/server/file/f/' . rawurlencode($file->dirname . $file->basename));
$json = json_decode($res->getBody());
if ($res->getStatusCode() !== 200 || ! isset($json->content)) {
@ -137,11 +107,9 @@ class FileRepository
}
$file = (object) pathinfo($file);
$file->dirname = (in_array($file->dirname, ['.', './', '/'])) ? null : trim($file->dirname, '/') . '/';
$res = $this->client->request('POST', '/server/file/save', [
'headers' => $this->headers,
$res = $this->server->guzzleClient()->request('POST', '/server/file/save', [
'json' => [
'path' => rawurlencode($file->dirname . $file->basename),
'content' => $content,
@ -167,9 +135,7 @@ class FileRepository
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,
]);
$res = $this->server->guzzleClient()->request('GET', '/server/directory/' . rawurlencode($directory));
$json = json_decode($res->getBody());
if ($res->getStatusCode() !== 200) {
@ -180,7 +146,7 @@ class FileRepository
$files = [];
$folders = [];
foreach ($json as &$value) {
if ($value->directory === true) {
if ($value->directory) {
// @TODO Handle Symlinks
$folders[] = [
'entry' => $value->name,
@ -189,7 +155,7 @@ class FileRepository
'date' => strtotime($value->modified),
'mime' => $value->mime,
];
} elseif ($value->file === true) {
} elseif ($value->file) {
$files[] = [
'entry' => $value->name,
'directory' => trim($directory, '/'),