Completed
Push — master ( 53745e...a97641 )
by Kirill
02:31
created

Groups::getIterator()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 8
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 4
nc 2
nop 0
1
<?php declare(strict_types=1);
2
/**
3
 * This file is part of GitterApi package.
4
 *
5
 * For the full copyright and license information, please view the LICENSE
6
 * file that was distributed with this source code.
7
 */
8
namespace Gitter\Resources;
9
10
use Gitter\Route;
11
12
/**
13
 * Group schema
14
 *  - id:           Group ID.
15
 *  - name:         Group name.
16
 *  - uri:          Group URI on Gitter.
17
 *  - backedBy:     Security descriptor. Describes the backing object we get permissions from.
18
 *      - type:         [null|'ONE_TO_ONE'|'GH_REPO'|'GH_ORG'|'GH_USER']
19
 *      - linkPath:     Represents how we find the backing object given the type
20
 *  - avatarUrl:    Base avatar URL (add s parameter to size)
21
 *
22
 * @package Gitter\Resources
23
 */
24
class Groups extends AbstractResource implements \IteratorAggregate
25
{
26
    const TYPE_ONE_TO_ONE   = 'ONE_TO_ONE';
27
    const TYPE_GITHUB_REPO  = 'GH_REPO';
28
    const TYPE_GITHUB_ORG   = 'GH_ORG';
29
    const TYPE_GITHUB_USER  = 'GH_USER';
30
31
    /**
32
     * List groups the current user is in.
33
     * Parameters: none
34
     *
35
     * @return array
36
     * @throws \RuntimeException
37
     * @throws \InvalidArgumentException
38
     */
39
    public function all(): array
40
    {
41
        return $this->fetch(Route::get('groups'));
42
    }
43
44
    /**
45
     * List of rooms nested under the specified group.
46
     *
47
     * @param string $groupId
48
     * @return array
49
     * @throws \RuntimeException
50
     * @throws \InvalidArgumentException
51
     */
52
    public function rooms(string $groupId): array
53
    {
54
        return $this->fetch(Route::get('groups/{groupId}/rooms')->with('groupId', $groupId));
55
    }
56
57
    /**
58
     * @return \Generator
59
     * @throws \RuntimeException
60
     * @throws \InvalidArgumentException
61
     */
62
    public function getIterator(): \Generator
63
    {
64
        $groups = $this->all();
65
66
        foreach ($groups as $i => $group) {
67
            yield $i => $group;
68
        }
69
    }
70
}
71