1<?php
2namespace Kunnu\Dropbox\Models;
3
4class ModelFactory
5{
6
7    /**
8     * Make a Model Factory
9     *
10     * @param  array  $data Model Data
11     *
12     * @return \Kunnu\Dropbox\Models\ModelInterface
13     */
14    public static function make(array $data = array())
15    {
16        if (isset($data['.tag']) && isset($data['id'])) {
17            $tag = $data['.tag'];
18
19            //File
20            if ($tag === 'file') {
21                return new FileMetadata($data);
22            }
23
24            //Folder
25            if ($tag === 'folder') {
26                return new FolderMetadata($data);
27            }
28        }
29
30        //Temporary Link
31        if (isset($data['metadata']) && isset($data['link'])) {
32            return new TemporaryLink($data);
33        }
34
35        //List
36        if (isset($data['entries'])) {
37            return new MetadataCollection($data);
38        }
39
40        //Search Results
41        if (isset($data['matches'])) {
42            return new SearchResults($data);
43        }
44
45        //Deleted File/Folder
46        if (!isset($data['.tag']) || !isset($data['id'])) {
47            return new DeletedMetadata($data);
48        }
49
50        //Base Model
51        return new BaseModel($data);
52    }
53}
54