Storage   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 27
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 13
dl 0
loc 27
ccs 14
cts 14
cp 1
rs 10
c 1
b 0
f 0
wmc 8

2 Methods

Rating   Name   Duplication   Size   Complexity  
A hasValidJsonData() 0 6 4
A getPasswordFromJson() 0 13 4
1
<?php
2
/**
3
 * PhPsst.
4
 *
5
 * @copyright Copyright (c) 2018 Felix Sandström
6
 * @license   MIT
7
 */
8
9
namespace PhPsst\Storage;
10
11
use PhPsst\Password;
12
13
/**
14
 * @author Felix Sandström <http://github.com/felixsand>
15
 */
16
abstract class Storage
17
{
18
    abstract public function store(Password $password, bool $allowOverwrite = false): void;
19
    abstract public function get(string $key): ?Password;
20
    abstract public function delete(Password $password): void;
21
22 2
    public function getPasswordFromJson(string $jsonData): ?Password
23
    {
24 2
        $password = null;
25 2
        $jsonObject = json_decode($jsonData);
26 2
        if ($jsonObject && $this->hasValidJsonData($jsonObject)) {
27 2
            $password = new Password($jsonObject->id, $jsonObject->password, $jsonObject->ttl, $jsonObject->views);
28 2
            if ($jsonObject->ttl < time()) {
29 1
                $this->delete($password);
30 1
                $password = null;
31
            }
32
        }
33
34 2
        return $password;
35
    }
36
37 2
    private function hasValidJsonData(\stdClass $jsonObject): bool
38
    {
39 2
        return !empty($jsonObject->id)
40 2
            && !empty($jsonObject->password)
41 2
            && !empty($jsonObject->ttl)
42 2
            && !empty($jsonObject->views);
43
    }
44
}
45