Passed
Push — master ( 77859c...e0031c )
by Mauro
02:25 queued 18s
created

GetCurrentItemVersion::validateParams()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
eloc 3
dl 0
loc 5
ccs 0
cts 3
cp 0
rs 10
c 0
b 0
f 0
cc 2
nc 2
nop 1
crap 6
1
<?php
2
/**
3
 *  This file is part of the Simple S3 package.
4
 *
5
 * (c) Mauro Cassani<https://github.com/mauretto78>
6
 *
7
 * For the full copyright and license information, please view the LICENSE
8
 * file that was distributed with this source code.
9
 *
10
 */
11
12
namespace Matecat\SimpleS3\Commands\Handlers;
13
14
use Matecat\SimpleS3\Commands\CommandHandler;
15
use Matecat\SimpleS3\Helpers\File;
16
17
class GetCurrentItemVersion extends CommandHandler
18
{
19
    /**
20
     * Get the current version of an item.
21
     * For a complete reference:
22
     * https://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-versioning.html?highlight=versioning%20bucket
23
     *
24
     * @param array $params
25
     *
26
     * @return null|string
27
     * @throws \Exception
28
     */
29
    public function handle($params = [])
30
    {
31
        $bucketName = $params['bucket'];
32
        $keyName = $params['key'];
33
34
        $fileInfo = File::getPathInfo($keyName);
35
        $prefix = $fileInfo['dirname'] . $this->client->getPrefixSeparator();
36
37
        $results = $this->client->getConn()->listObjectVersions([
38
            'Bucket' => $bucketName,
39
            'Prefix' => $prefix
40
        ]);
41
42
        if (false === isset($results['Versions'])) {
43
            return null;
44
        }
45
46
        if ($this->client->hasEncoder()) {
47
            $keyName = $this->client->getEncoder()->encode($keyName);
48
        }
49
50
        foreach ($results['Versions'] as $result) {
51
            if (true === $result['IsLatest'] and $keyName === $result['Key']) {
52
                return $result['VersionId'];
53
            }
54
        }
55
    }
56
57
    /**
58
     * @param array $params
59
     *
60
     * @return bool
61
     */
62
    public function validateParams($params = [])
63
    {
64
        return (
65
            isset($params['bucket']) and
66
            isset($params['key'])
67
        );
68
    }
69
}
70