Compare commits

..

No commits in common. "master" and "3.2.0" have entirely different histories.

13 changed files with 396 additions and 709 deletions

View file

@ -16,14 +16,10 @@ body:
id: version
attributes:
label: Version
description: What version of Spaces-API is this occuring on? Versions below 3 will not be fixed. Please upgrade.
description: What version of Spaces-API is this occuring on?
options:
- 3.5.0
- 3.4.0
- 3.3.0
- 3.2.0
- 3.1.0
- 3.0.0
- 2.0.1
- 2.0.0
validations:
required: true
- type: input

View file

@ -1,7 +1,6 @@
# This library is deprecated
We recommend using the [official SDK](https://github.com/DigitalOceanPHP/Client) or the [Laravel package](https://github.com/GrahamCampbell/Laravel-DigitalOcean)
![Spaces-API](https://imgur.com/NYNsQyl.png "Devang Srivastava's Spaces-API")
All issues will be closed and new PRs will not be accepted
PHP library for accessing Digital Ocean spaces
## Installation
Install via composer
@ -33,9 +32,6 @@ $file2url = $file2->getSignedURL("2 hours");
// Make a copy
$file3 = $file2->copy('remote-file-3.txt');
// Move or rename a file
$file2->move('new-filename.txt')
// Make a file public and get the URL
$file3->makePublic();
$file3url = $file3->getURL();

View file

@ -4,8 +4,6 @@ namespace SpacesAPI;
use SpacesAPI\Exceptions\FileDoesntExistException;
use function PHPUnit\Framework\isNull;
/**
* Represents a single file
*
@ -213,34 +211,19 @@ class File
*
* @return \SpacesAPI\File
*/
public function copy(string $newFilename): File
public function copy(string $newFilename, bool $public = false): File
{
$this->s3->copy(
$this->space_name,
$this->_filename,
$this->space_name,
$newFilename,
($this->isPublic()) ? 'public-read' : 'private'
($public) ? 'public-read' : 'private'
);
return new self($this->space, $newFilename);
}
/**
* @param string $newFilename
*
* @return \SpacesAPI\File
*/
public function move(string $newFilename): File
{
$this->copy($newFilename);
$this->delete();
$this->_filename = $newFilename;
$this->fetchFileInfo();
return $this;
}
/**
* Get the public URL
* This URL will not work if the file is private

View file

@ -288,13 +288,12 @@ class Space
* @param string $text The text to upload
* @param string $filename The filepath/name to save to
* @param array $params Any extra parameters. [See here](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#upload-property)
* @param bool $private True for the file to be private, false to allow public access
*
* @return \SpacesAPI\File
*/
public function uploadText(string $text, string $filename, array $params = [], bool $private = true): File
public function uploadText(string $text, string $filename, array $params = []): File
{
$this->s3->upload($this->name, $filename, $text, ($private) ? 'private' : 'public-read', $params);
$this->s3->upload($this->name, $filename, $text, 'private', $params);
return new File($this, $filename, [], false);
}
@ -303,19 +302,15 @@ class Space
*
* @param string $filepath The path to the file, including the filename. Relative and absolute paths are accepted.
* @param string|null $filename The remote filename. If `null`, the local filename will be used.
* @param string|null $mimeType The file mime type to pass as ContentType for the file (e.g. 'image/jpeg').
* @param bool $private True for the file to be private, false to allow public access.
*
* @return \SpacesAPI\File
*/
public function uploadFile(string $filepath, ?string $filename = null, ?string $mimeType = null, bool $private = true): File
public function uploadFile(string $filepath, ?string $filename = null): File
{
$this->s3->putObject([
'Bucket' => $this->name,
'Key' => ($filename) ?: basename($filepath),
'SourceFile' => $filepath,
'ContentType' => $mimeType,
'ACL' => ($private) ? 'private' : 'public-read'
]);
return new File($this, ($filename) ?: basename($filepath), [], false);
@ -325,14 +320,13 @@ class Space
* Get an instance of \SpacesAPI\File for a given filename
*
* @param string $filename
* @package bool $validate
*
* @return \SpacesAPI\File
* @throws \SpacesAPI\Exceptions\FileDoesntExistException Thrown if the file doesn't exist
*/
public function file(string $filename, bool $validate = true): File
public function file(string $filename): File
{
return new File($this, $filename, [], $validate);
return new File($this, $filename);
}
/**

View file

@ -36,7 +36,7 @@ class Spaces
{
$this->s3 = new S3Client([
"version" => "latest",
"region" => $region,
"region" => "us-east-1",
"endpoint" => "https://$region.$host",
"credentials" => ["key" => $accessKey, "secret" => $secretKey],
"ua_append" => "SociallyDev-Spaces-API/2",

View file

@ -1,7 +1,7 @@
{
"name": "sociallydev/spaces-api",
"description": "Library for accessing Digital Ocean spaces",
"version":"3.6.1",
"version":"3.2.0",
"type": "library",
"license": "MIT",
"authors": [
@ -27,7 +27,7 @@
},
"require-dev": {
"clean/phpdoc-md": "^0.19.1",
"phpunit/phpunit": "^9.5.13",
"vlucas/phpdotenv": "^v5.4.1"
"phpunit/phpunit": "^9.5",
"vlucas/phpdotenv": "^5.3"
}
}

941
composer.lock generated

File diff suppressed because it is too large Load diff

View file

@ -33,7 +33,7 @@ foreach ($files['files'] as $file) {
```php
$space = new Spaces('api-key', 'api-secret')->space('my-space-name');
$file = $space->uploadFile('./localfile.txt', 'remote-filename.txt');
$file = $space->uploadFile('./localfile.txt');
```
[API docs for uploading files](Space.md#spaceuploadfile)

View file

@ -30,7 +30,6 @@ Rather obtain an instance from `\SpacesAPI\Space::list()`, `\SpacesAPI\Spaces::f
|[isPublic](#fileispublic)|Is this file publicly accessible|
|[makePrivate](#filemakeprivate)|Make file non-publicly accessible|
|[makePublic](#filemakepublic)|Make file publicly accessible|
|[move](#filemove)|Move and/or rename file|
@ -289,27 +288,4 @@ Make file publicly accessible
`void`
<hr />
### File::move
**Description**
```php
public move (string $newFilename)
```
Move or rename a file
The instance of `File` is now the moved object
**Parameters**
* `(string) $newFilename`
**Return Values**
`\SpacesAPI\File` : An instance for the new file
<hr />

View file

@ -180,7 +180,7 @@ Recursively download an entire directory.
**Description**
```php
public file (string $filename, bool $validate = true)
public file (string $filename)
```
Get an instance of \SpacesAPI\File for a given filename
@ -190,8 +190,6 @@ Get an instance of \SpacesAPI\File for a given filename
**Parameters**
* `(string) $filename`
* `(bool) $validate`
: Whether to validate the file exits. Defaults to `true`
**Return Values**
@ -465,7 +463,7 @@ Recursively upload an entire directory
**Description**
```php
public uploadFile (string $filepath, string|null $filename = null, string|null $mimeType = null, bool $private = true)
public uploadFile (string $filepath, string|null $filename = null)
```
Upload a file
@ -478,10 +476,6 @@ Upload a file
: The path to the file, including the filename. Relative and absolute paths are accepted.
* `(string|null) $filename`
: The remote filename. If `null`, the local filename will be used. Default `null`
* `(string|null) $mimeType`
: The files mimeType. If `null` the mimeType is inferred from the file by DigitalOcean Spaces. Default `null`
* `(bool)` $private
: If `true` then the file is private, if `false` the file is publicly available. Default `true`
**Return Values**
@ -498,7 +492,7 @@ Upload a file
**Description**
```php
public uploadText (string $text, string $filename, array $params = [], bool $private = true)
public uploadText (string $text, string $filename, array $params => [])
```
Upload a string of text to file
@ -513,8 +507,6 @@ Upload a string of text to file
: The filepath/name to save to
* `(array) $params`
: Any extra parameters. [See here](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#upload-property)
* `(bool) $private`
: True for the file to be private, false to allow public access
**Return Values**

View file

@ -8,7 +8,6 @@ use SpacesAPI\Spaces;
class FileTest extends TestCase
{
private static $tempSpaceName;
private static $space;
private static $file;
@ -20,15 +19,18 @@ class FileTest extends TestCase
$spaces = new Spaces($_ENV['SPACES_KEY'], $_ENV['SPACES_SECRET']);
self::$tempSpaceName = md5(time());
try {
$spaces->space('spaces-api-test')->destroy();
} catch (SpaceDoesntExistException $e) {
}
self::$space = $spaces->create(self::$tempSpaceName);
self::$space = $spaces->create('spaces-api-test');
self::$file = self::$space->uploadText('Lorem ipsum', 'lorem-ipsum.txt');
}
public static function tearDownAfterClass(): void
{
self::$space->destroy();
(new Spaces($_ENV['SPACES_KEY'], $_ENV['SPACES_SECRET']))->space('spaces-api-test')->destroy();
}
public function testCanUpdatePrivacy()
@ -62,17 +64,6 @@ class FileTest extends TestCase
self::$space->file('lorem-ipsum-2.txt');
}
public function testCanMoveRenameFile()
{
$file = self::$file->copy('test.txt');
$file->move('renamed-file.txt');
$this->assertEquals("renamed-file.txt", $file->filename);
$this->expectException(FileDoesntExistException::class);
self::$space->file('test.txt');
}
public function testCanGetURL()
{
$this->assertStringContainsString('lorem-ipsum.txt', self::$file->getURL());

View file

@ -9,7 +9,6 @@ use SpacesAPI\Spaces;
class SpaceTest extends TestCase
{
private static $tempSpaceName;
private static $space;
public static function setUpBeforeClass(): void
@ -20,14 +19,17 @@ class SpaceTest extends TestCase
$spaces = new Spaces($_ENV['SPACES_KEY'], $_ENV['SPACES_SECRET']);
self::$tempSpaceName = md5(time());
try {
$spaces->space('spaces-api-test')->destroy();
} catch (SpaceDoesntExistException $e) {
}
self::$space = $spaces->create(self::$tempSpaceName);
self::$space = $spaces->create('spaces-api-test');
}
public static function tearDownAfterClass(): void
{
self::$space->destroy();
// (new Spaces($_ENV['SPACES_KEY'], $_ENV['SPACES_SECRET']))->space('spaces-api-test')->destroy();
}
public function testCanUpdateSpacePrivacy()
@ -69,14 +71,6 @@ class SpaceTest extends TestCase
{
$file = self::$space->uploadText("Lorem ipsum", "lorem-ipsum.txt");
$this->assertInstanceOf(File::class, $file);
$this->assertFalse($file->isPublic());
}
public function testCanPublicUploadText()
{
$file = self::$space->uploadText("Lorem ipsum", "lorem-ipsum.txt", [], false);
$this->assertInstanceOf(File::class, $file);
$this->assertTrue($file->isPublic());
}
public function testCanUploadFile()
@ -86,14 +80,6 @@ class SpaceTest extends TestCase
$this->assertInstanceOf(File::class, $file);
}
public function testCanUploadFileWithMimeType()
{
$tmpFile = tempnam(sys_get_temp_dir(), 'spaces-test');
$file = self::$space->uploadFile($tmpFile, 'upload-test.txt', 'text/plain');
$this->assertInstanceOf(File::class, $file);
$this->assertEquals('text/plain', $file->content_type);
}
/**
* @depends testCanUploadText
* @depends testCanUploadFile

View file

@ -10,21 +10,21 @@ use SpacesAPI\Spaces;
class SpacesTest extends TestCase
{
private static $tempSpaceName;
public static function setUpBeforeClass(): void
{
$dotenv = Dotenv::createImmutable(__DIR__ . "/..");
$dotenv->load();
$dotenv->required(['SPACES_KEY', 'SPACES_SECRET']);
// This should hopefully always be unique amongst all DO spaces
self::$tempSpaceName = md5(time());
try {
(new Spaces($_ENV['SPACES_KEY'], $_ENV['SPACES_SECRET']))->space('spaces-api-test')->destroy();
} catch (SpaceDoesntExistException $e) {
}
}
public static function tearDownAfterClass(): void
{
(new Spaces($_ENV['SPACES_KEY'], $_ENV['SPACES_SECRET']))->space(self::$tempSpaceName)->destroy();
(new Spaces($_ENV['SPACES_KEY'], $_ENV['SPACES_SECRET']))->space('spaces-api-test')->destroy();
}
public function testAuthenticationCanFail()
@ -53,7 +53,7 @@ class SpacesTest extends TestCase
*/
public function testCanCreateSpace(Spaces $spaces)
{
$space = $spaces->create(self::$tempSpaceName);
$space = $spaces->create('spaces-api-test');
$this->assertInstanceOf(Space::class, $space);
return $space;
@ -69,7 +69,7 @@ class SpacesTest extends TestCase
$spaceFound = false;
foreach ($list as $name => $space) {
if ($name == self::$tempSpaceName && $space->getName() == self::$tempSpaceName) {
if ($name == 'spaces-api-test' && $space->getName() == 'spaces-api-test') {
$spaceFound = true;
}
}