Completed
Push — master ( cbed4d...29d6d4 )
by Felix
02:53
created

Storage   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 58
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 8
c 1
b 0
f 0
lcom 0
cbo 1
dl 0
loc 58
ccs 23
cts 23
cp 1
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
store() 0 1 ?
get() 0 1 ?
delete() 0 1 ?
B getPasswordFromJson() 0 18 7
A getJsonFromPassword() 0 10 1
1
<?php
2
/**
3
 * PhPsst.
4
 *
5
 * @copyright Copyright (c) 2016 Felix Sandström
6
 * @license   MIT
7
 */
8
9
namespace PhPsst\Storage;
10
11
use PhPsst\Password;
12
use PhPsst\PhPsstException;
13
14
/**
15
 */
16
abstract class Storage
17
{
18
    /**
19
     * @param Password $password
20
     * @param bool $allowOverwrite
21
     */
22
    abstract public function store(Password $password, $allowOverwrite = false);
23
24
    /**
25
     * @param $key
26
     * @return Password|null
27
     */
28
    abstract public function get($key);
29
30
    /**
31
     * @param Password $password
32
     * @return void
33
     */
34
    abstract public function delete(Password $password);
35
36
    /**
37
     * @param string $jsonData
38
     * @return Password
39
     */
40 2
    public function getPasswordFromJson($jsonData)
41
    {
42 2
        $password = null;
43 2
        if (($jsonObject = json_decode($jsonData))
44 2
            && !empty($jsonObject->id)
45 2
            && !empty($jsonObject->password)
46 2
            && !empty($jsonObject->ttl)
47 2
            && !empty($jsonObject->views)
48 2
        ) {
49 2
            $password = new Password($jsonObject->id, $jsonObject->password, $jsonObject->ttl, $jsonObject->views);
50 2
            if ($jsonObject->ttlTime < time()) {
51 1
                $this->delete($password);
52 1
                $password = null;
53 1
            }
54 2
        }
55
56 2
        return $password;
57
    }
58
59
    /**
60
     * @param Password $password
61
     * @return string
62
     */
63 2
    public function getJsonFromPassword(Password $password)
64
    {
65 2
        return json_encode([
66 2
            'id' => $password->getId(),
67 2
            'password' => $password->getPassword(),
68 2
            'ttl' => $password->getTtl(),
69 2
            'ttlTime' => time() + $password->getTtl(),
70 2
            'views' => $password->getViews(),
71 2
        ]);
72
    }
73
}
74