Passed
Push — master ( a0dc52...1c8004 )
by Mike
19:12
created

ClassroomApi   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 72
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 100%

Importance

Changes 4
Bugs 0 Features 0
Metric Value
wmc 7
c 4
b 0
f 0
lcom 1
cbo 4
dl 0
loc 72
ccs 32
cts 32
cp 1
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A create() 0 10 1
A createPermaClas() 0 12 1
A addAttendeesToClass() 0 11 2
A getPresentersFromResponse() 0 12 2
1
<?php
2
namespace mikemix\Wiziq\API;
3
4
use mikemix\Wiziq\API\Request;
5
use mikemix\Wiziq\Common\Api\ClassroomApiInterface;
6
use mikemix\Wiziq\Entity\Attendees;
7
use mikemix\Wiziq\Entity\Classroom;
8
use mikemix\Wiziq\Entity\PermaClassroom;
9
10
class ClassroomApi implements ClassroomApiInterface
11
{
12
    /** @var Gateway */
13
    protected $gateway;
14
15 4
    public function __construct(Gateway $requester)
16
    {
17 4
        $this->gateway = $requester;
18 4
    }
19
20
    /**
21
     * {@inheritdoc}
22
     */
23 1
    public function create(Classroom $classroom)
24
    {
25 1
        $response = $this->gateway->sendRequest(new Request\Create($classroom));
26
27
        return [
28 1
            'class_id'      => (int)$response->create[0]->class_details[0]->class_id,
29 1
            'recording_url' => (string)$response->create[0]->class_details[0]->recording_url,
30 1
            'presenters'    => $this->getPresentersFromResponse($response->create[0]->class_details[0])
31 1
        ];
32
    }
33
34
    /**
35
     * {@inheritdoc}
36
     */
37 1
    public function createPermaClas(PermaClassroom $classroom)
38
    {
39 1
        $response = $this->gateway->sendRequest(new Request\CreatePermaClass($classroom));
40 1
        $details  = $response->create_perma_class[0]->perma_class_details[0];
41
42
        return [
43 1
            'class_id'        => (int)$details->class_master_id,
44 1
            'attendee_url'    => (string)$details->common_perma_attendee_url,
45 1
            'presenter_email' => (string)$details->presenter[0]->presenter_email,
46 1
            'presenter_url'   => (string)$details->presenter[0]->presenter_url,
47 1
        ];
48
    }
49
50
    /**
51
     * {@inheritdoc}
52
     */
53 1
    public function addAttendeesToClass($classroomId, Attendees $attendees)
54
    {
55 1
        $response = $this->gateway->sendRequest(new Request\AddAttendees($classroomId, $attendees));
56 1
        $result   = [];
57
58 1
        foreach ($response->add_attendees[0]->attendee_list[0] as $attendee) {
59 1
            $result[] = ['id' => (int)$attendee->attendee_id, 'url' => (string)$attendee->attendee_url];
60 1
        }
61
62 1
        return $result;
63
    }
64
65
    /**
66
     * @param \SimpleXMLElement $response
67
     * @return array
68
     */
69 1
    protected function getPresentersFromResponse(\SimpleXMLElement $response)
70
    {
71 1
        $presenters = [];
72 1
        foreach ($response->presenter_list[0] as $presenter) {
73 1
            $presenters[] = [
74 1
                'email' => (string)$presenter->presenter_email,
75 1
                'url'   => (string)$presenter->presenter_url,
76
            ];
77 1
        }
78
79 1
        return $presenters;
80
    }
81
}
82