Completed
Push — master ( af301e...15ef57 )
by Kunal
04:00
created

ModelFactory::isList()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 4
ccs 0
cts 4
cp 0
rs 10
cc 1
eloc 2
nc 1
nop 1
crap 2
1
<?php
2
3
namespace Kunnu\Dropbox\Models;
4
5
class ModelFactory
6
{
7
8
    /**
9
     * Make a Model Factory
10
     *
11
     * @param  array $data Model Data
12
     *
13
     * @return \Kunnu\Dropbox\Models\ModelInterface
14
     */
15
    public static function make(array $data = array())
16
    {
17
        if (static::isFileOrFolder($data)) {
18
            $tag = $data['.tag'];
19
20
            //File
21
            if (static::isFile($tag)) {
22
                return new FileMetadata($data);
23
            }
24
25
            //Folder
26
            if (static::isFolder($tag)) {
27
                return new FolderMetadata($data);
28
            }
29
        }
30
31
        //Temporary Link
32
        if (static::isTemporaryLink($data)) {
33
            return new TemporaryLink($data);
34
        }
35
36
        //List
37
        if (static::isList($data)) {
38
            return new MetadataCollection($data);
39
        }
40
41
        //Search Results
42
        if (static::isSearchResult($data)) {
43
            return new SearchResults($data);
44
        }
45
46
        //Deleted File/Folder
47
        if (static::isDeletedFileOrFolder($data)) {
48
            return new DeletedMetadata($data);
49
        }
50
51
        //Base Model
52
        return new BaseModel($data);
53
    }
54
55
    /**
56
     * @param array $data
57
     *
58
     * @return bool
59
     */
60
    protected static function isFileOrFolder(array $data)
61
    {
62
        return isset($data['.tag']) && isset($data['id']);
63
    }
64
65
    /**
66
     * @param string $tag
67
     *
68
     * @return bool
69
     */
70
    protected static function isFile($tag)
71
    {
72
        return $tag === 'file';
73
    }
74
75
    /**
76
     * @param string $tag
77
     *
78
     * @return bool
79
     */
80
    protected static function isFolder($tag)
81
    {
82
        return $tag === 'folder';
83
    }
84
85
    /**
86
     * @param array $data
87
     *
88
     * @return bool
89
     */
90
    protected static function isTemporaryLink(array $data)
91
    {
92
        return isset($data['metadata']) && isset($data['link']);
93
    }
94
95
    /**
96
     * @param array $data
97
     *
98
     * @return bool
99
     */
100
    protected static function isList(array $data)
101
    {
102
        return isset($data['entries']);
103
    }
104
105
    /**
106
     * @param array $data
107
     *
108
     * @return bool
109
     */
110
    protected static function isSearchResult(array $data)
111
    {
112
        return isset($data['matches']);
113
    }
114
115
    /**
116
     * @param array $data
117
     *
118
     * @return bool
119
     */
120
    protected static function isDeletedFileOrFolder(array $data)
121
    {
122
        return !isset($data['.tag']) || !isset($data['id']);
123
    }
124
}
125