Completed
Push — master ( 738b10...36c812 )
by Mike
02:22
created

ClassroomApi   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 80
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Test Coverage

Coverage 100%

Importance

Changes 5
Bugs 0 Features 0
Metric Value
wmc 8
c 5
b 0
f 0
lcom 1
cbo 5
dl 0
loc 80
ccs 35
cts 35
cp 1
rs 10

6 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A create() 0 10 1
A cancel() 0 4 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 5
    public function __construct(Gateway $requester)
16
    {
17 5
        $this->gateway = $requester;
18 5
    }
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 cancel($classroomId)
38
    {
39 1
        $this->gateway->sendRequest(new Request\Cancel($classroomId));
40 1
    }
41
42
    /**
43
     * {@inheritdoc}
44
     */
45 1
    public function createPermaClas(PermaClassroom $classroom)
46
    {
47 1
        $response = $this->gateway->sendRequest(new Request\CreatePermaClass($classroom));
48 1
        $details  = $response->create_perma_class[0]->perma_class_details[0];
49
50
        return [
51 1
            'class_id'        => (int)$details->class_master_id,
52 1
            'attendee_url'    => (string)$details->common_perma_attendee_url,
53 1
            'presenter_email' => (string)$details->presenter[0]->presenter_email,
54 1
            'presenter_url'   => (string)$details->presenter[0]->presenter_url,
55 1
        ];
56
    }
57
58
    /**
59
     * {@inheritdoc}
60
     */
61 1
    public function addAttendeesToClass($classroomId, Attendees $attendees)
62
    {
63 1
        $response = $this->gateway->sendRequest(new Request\AddAttendees($classroomId, $attendees));
64 1
        $result   = [];
65
66 1
        foreach ($response->add_attendees[0]->attendee_list[0] as $attendee) {
67 1
            $result[] = ['id' => (int)$attendee->attendee_id, 'url' => (string)$attendee->attendee_url];
68 1
        }
69
70 1
        return $result;
71
    }
72
73
    /**
74
     * @param \SimpleXMLElement $response
75
     * @return array
76
     */
77 1
    protected function getPresentersFromResponse(\SimpleXMLElement $response)
78
    {
79 1
        $presenters = [];
80 1
        foreach ($response->presenter_list[0] as $presenter) {
81 1
            $presenters[] = [
82 1
                'email' => (string)$presenter->presenter_email,
83 1
                'url'   => (string)$presenter->presenter_url,
84
            ];
85 1
        }
86
87 1
        return $presenters;
88
    }
89
}
90