Completed
Push — d64 ( 9e51da...6654da )
by Welling
02:07
created

AbstractClient   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 35
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 4

Test Coverage

Coverage 33.33%

Importance

Changes 0
Metric Value
dl 0
loc 35
ccs 6
cts 18
cp 0.3333
rs 10
c 0
b 0
f 0
wmc 8
lcom 0
cbo 4

3 Methods

Rating   Name   Duplication   Size   Complexity  
A createResponseFromData() 0 10 4
A parseData() 0 9 2
A parseDirectusUsers() 0 10 2
1
<?php
2
3
namespace Directus\SDK;
4
5
use Directus\SDK\Response\EntryCollection;
6
use Directus\SDK\Response\Entry;
7
use Directus\Util\ArrayUtils;
8
use Directus\Util\StringUtils;
9
10
abstract class AbstractClient implements RequestsInterface
11
{
12
    // @TODO: move to a builder class
13 28
    protected function createResponseFromData($data)
14
    {
15 28
        if (isset($data['rows']) || (isset($data['data']) && ArrayUtils::isNumericKeys($data['data']))) {
16 6
            $response = new EntryCollection($data);
17 6
        } else {
18 22
            $response = new Entry($data);
19
        }
20
21 28
        return $response;
22
    }
23
24
    protected function parseData($tableName, array $data)
25
    {
26
        $method = 'parse' . StringUtils::underscoreToCamelCase($tableName, true);
27
        if (method_exists($this, $method)) {
28
            $data = call_user_func_array([$this, $method], [$data]);
29
        }
30
31
        return $data;
32
    }
33
34
    public function parseDirectusUsers($data)
35
    {
36
        $data = ArrayUtils::omit($data, ['id', 'user', 'access_token', 'last_login', 'last_access', 'last_page']);
37
        if (ArrayUtils::has($data, 'password')) {
38
            // @TODO: use Auth hash password
39
            $data['password'] = password_hash($data['password'], PASSWORD_DEFAULT, ['cost' => 12]);
40
        }
41
42
        return $data;
43
    }
44
}