Trees::get()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 5
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 1
1
<?php
2
namespace FlexyProject\GitHub\Receiver\GitData;
3
4
use Symfony\Component\HttpFoundation\Request;
5
6
/**
7
 * The Trees API class provides access to GitData's trees
8
 *
9
 * @link    https://developer.github.com/v3/git/trees/
10
 * @package FlexyProject\GitHub\Receiver\GitData
11
 */
12
class Trees extends AbstractGitData
13
{
14
15
    /**
16
     * Get a Tree
17
     *
18
     * @link https://developer.github.com/v3/git/trees/#get-a-tree
19
     *
20
     * @param string $sha
21
     *
22
     * @return array
23
     * @throws \Exception
24
     */
25
    public function get(string $sha): array
26
    {
27
        return $this->getApi()->request($this->getApi()->sprintf('/repos/:owner/:repo/git/trees/:sha',
28
            $this->getGitData()->getOwner(), $this->getGitData()->getRepo(), $sha));
29
    }
30
31
    /**
32
     * Get a Tree Recursively
33
     *
34
     * @link https://developer.github.com/v3/git/trees/#get-a-tree-recursively
35
     *
36
     * @param string $sha
37
     *
38
     * @return array
39
     * @throws \Exception
40
     */
41
    public function getRecursively(string $sha): array
42
    {
43
        return $this->getApi()->request($this->getApi()->sprintf('/repos/:owner/:repo/git/trees/:sha?recursive=1',
44
            $this->getGitData()->getOwner(), $this->getGitData()->getRepo(), $sha));
45
    }
46
47
    /**
48
     * Create a Tree
49
     *
50
     * @link https://developer.github.com/v3/git/trees/#create-a-tree
51
     *
52
     * @param array  $tree
53
     * @param string $base_tree
54
     *
55
     * @return array
56
     * @throws \Exception
57
     */
58
    public function create(array $tree, string $base_tree): array
59
    {
60
        return $this->getApi()->request($this->getApi()
61
                                             ->sprintf('/repos/:owner/:repo/git/trees', $this->getGitData()->getOwner(),
62
                                                 $this->getGitData()->getRepo()), Request::METHOD_POST, [
63
                'tree'      => $tree,
64
                'base_tree' => $base_tree
65
            ]);
66
    }
67
}