ReportForm   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 108
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 9
lcom 1
cbo 1
dl 0
loc 108
ccs 0
cts 19
cp 0
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 8 2
A getBibFond() 0 4 1
A getUrl() 0 25 4
A getEBooks() 0 4 1
A getSpecPo() 0 4 1
1
<?php
2
/**
3
 * Class ReportForm
4
 *
5
 * @author       Emil Limarenko <[email protected]>
6
 * @copyright    Copyright (c) 2017, Lan Publishing
7
 * @license      MIT
8
 */
9
10
namespace Lan\Ebs\Sdk;
11
12
use Exception;
13
14
/**
15
 * SDK формализованных отчетов
16
 *
17
 * @package      Lan\Ebs
18
 * @subpackage   Sdk
19
 */
20
class ReportForm implements Common
21
{
22
    /**
23
     * Инстанс клиента API
24
     *
25
     * @var Client
26
     */
27
    private $client;
28
29
    /**
30
     * Конструктор формализованного отчета
31
     *
32
     * Экземпляр класса ReportForm нужен для осуществления запросов к API для получения формализованных отчетных данных ЭБС Лань.
33
     *
34
     * @param Client $client Инстанс клиента
35
     *
36
     * Пример:
37
     * ```php
38
     *      $token = '7c0c2193d27108a509abd8ea84a8750c82b3a520'; // токен для тестового подписчика
39
     *
40
     *      $client = new Client($token); // инициализация клиента
41
     *
42
     *      $report = new ReportForm($client):
43
     * ```
44
     *
45
     * @throws Exception
46
     */
47
    public function __construct(Client $client)
48
    {
49
        if (!$client) {
50
            throw new Exception('Клиент не инициализирован');
51
        }
52
53
        $this->client = $client;
54
    }
55
56
    /**
57
     * Библиотечный фонд
58
     *
59
     * @return mixed
60
     *
61
     * @throws Exception
62
     */
63
    public function getBibFond()
64
    {
65
        return $this->client->getResponse($this->getUrl(__FUNCTION__))['data'];
66
    }
67
68
    /**
69
     * Получение данных для запроса через API
70
     *
71
     * @param string $method Http-метод запроса
72
     * @param array $params Параметры для формирования урла
73
     *
74
     * @return array
75
     *
76
     * @throws Exception
77
     */
78
    public function getUrl($method, array $params = array())
79
    {
80
        switch ($method) {
81
            case 'getBibFond':
82
                return array(
83
                    'url' => '/1.0/report/form/bibFond',
84
                    'method' => 'GET',
85
                    'code' => 200
86
                );
87
            case 'getEBooks':
88
                return array(
89
                    'url' => '/1.0/report/form/eBooks',
90
                    'method' => 'GET',
91
                    'code' => 200
92
                );
93
            case 'getSpecPo':
94
                return array(
95
                    'url' => '/1.0/report/form/specPo',
96
                    'method' => 'GET',
97
                    'code' => 200
98
                );
99
            default:
100
                throw new Exception('Route for ' . $method . ' not found');
101
        }
102
    }
103
104
    /**
105
     * Электронных книг по направлениям подготовки
106
     *
107
     * @return mixed
108
     *
109
     * @throws Exception
110
     */
111
    public function getEBooks()
112
    {
113
        return $this->client->getResponse($this->getUrl(__FUNCTION__))['data'];
114
    }
115
116
    /**
117
     * Специальное ПО
118
     *
119
     * @return mixed
120
     *
121
     * @throws Exception
122
     */
123
    public function getSpecPo()
124
    {
125
        return $this->client->getResponse($this->getUrl(__FUNCTION__))['data'];
126
    }
127
}