Video   A
last analyzed

Complexity

Total Complexity 20

Size/Duplication

Total Lines 191
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 8
Bugs 0 Features 0
Metric Value
wmc 20
c 8
b 0
f 0
lcom 1
cbo 2
dl 0
loc 191
rs 10

8 Methods

Rating   Name   Duplication   Size   Complexity  
B upload() 0 37 5
A deleteVideo() 0 4 1
A getVideo() 0 4 1
A putVideo() 0 11 1
B patchVideo() 0 22 5
A addThumb() 0 6 1
A publication() 0 9 1
B getPlayOptions() 0 18 5
1
<?php
2
3
/*
4
 * This file is part of the Rutube PHP API Client package.
5
 *
6
 * (c) Rutube
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Rutube;
13
14
/**
15
 * Работа с видео
16
 *
17
 * @package Rutube
18
 */
19
class Video extends Entity
20
{
21
    /**
22
     * Загрузка видео
23
     *
24
     * @param string $url URL по которому находится скачиваемый ролик
25
     * @param string $title Название
26
     * @param string $description Описание
27
     * @param int $is_hidden Признак видимости, 1 - ролик скрыт
28
     * @param int $category_id ID категории
29
     * @param string|null $callback_url callbacl-URL по завершению обработки ролика
30
     * @param string|null $errback_url URL, вызываемый для сообщения об ошибке
31
     * @param string|null $query_fields Перечень возвращаемых полей
32
     * @param string|null $extra Дополнительные параметры для колбэков
33
     * @return mixed
34
     */
35
    public function upload(
36
        $url,
37
        $title = '',
38
        $description = '',
39
        $is_hidden = 1,
40
        $category_id = 13,
41
        $callback_url = null,
42
        $errback_url = null,
43
        $query_fields = null,
44
        $extra = null
45
    ) {
46
        $params = array(
47
            'url' => $url,
48
            'title' => $title,
49
            'description' => $description,
50
            'is_hidden' => $is_hidden,
51
            'category_id' => $category_id,
52
        );
53
54
        if ($callback_url !== null) {
55
            $params['callback_url'] = $callback_url;
56
        }
57
58
        if ($errback_url !== null) {
59
            $params['errback_url'] = $errback_url;
60
        }
61
62
        if ($query_fields !== null) {
63
            $params['query_fields'] = $query_fields;
64
        }
65
66
        if ($extra !== null) {
67
            $params['extra'] = $extra;
68
        }
69
70
        return $this->getTransport()->uploadVideo($params);
71
    }
72
73
    /**
74
     * Удаление ролика
75
     *
76
     * @param string $id ID ролика
77
     * @return bool Ролик поставлен в очередь на удаление
78
     */
79
    public function deleteVideo($id)
80
    {
81
        return $this->getTransport()->deleteVideo($id);
82
    }
83
84
    /**
85
     * Получени информации о ролике
86
     *
87
     * @param string $id ID ролика
88
     * @return mixed
89
     */
90
    public function getVideo($id)
91
    {
92
        return $this->getTransport()->getVideo($id);
93
    }
94
95
    /**
96
     * Обновить информацию о ролике
97
     *
98
     * @param string $id ID ролика
99
     * @param string $title Название
100
     * @param string $description Описание
101
     * @param int $is_hidden Признак видимости, 1 - ролик скрыт
102
     * @param int $category_id ID категории
103
     * @return mixed
104
     */
105
    public function putVideo($id, $title, $description, $is_hidden, $category_id)
106
    {
107
        $params = array(
108
            'title' => $title,
109
            'description' => $description,
110
            'is_hidden' => $is_hidden,
111
            'category' => $category_id
112
        );
113
114
        return $this->getTransport()->putVideo($id, $params);
115
    }
116
117
    /**
118
     * Обновление только указанных полей в информации о ролике
119
     *
120
     * @param string $id ID ролика
121
     * @param string|null $title Название
122
     * @param string|null $description Описание
123
     * @param int|null $is_hidden Признак видимости, 1 - ролик скрыт
124
     * @param int|null $category_id ID категории
125
     * @return mixed
126
     */
127
    public function patchVideo($id, $title = null, $description = null, $is_hidden = null, $category_id = null)
128
    {
129
        $params = array();
130
131
        if (!is_null($title)) {
132
            $params['title'] = $title;
133
        }
134
135
        if (!is_null($description)) {
136
            $params['description'] = $description;
137
        }
138
139
        if (!is_null($is_hidden)) {
140
            $params['is_hidden'] = $is_hidden;
141
        }
142
143
        if (!is_null($category_id)) {
144
            $params['category'] = $category_id;
145
        }
146
147
        return $this->getTransport()->patchVideo($id, $params);
148
    }
149
150
    /**
151
     * Загрузка превью к ролику
152
     *
153
     * @param string $id ID ролика
154
     * @param string $filename Путь к файлу превью
155
     * @return mixed
156
     */
157
    public function addThumb($id, $filename)
158
    {
159
        $file = array('file' => $filename);
160
161
        return $this->getTransport()->addThumb($id, $file);
162
    }
163
164
    /**
165
     * Отложенная публикация ролика
166
     *
167
     * @param string $id ID ролика
168
     * @param string $date Дата в формате 'YYYY-MM-DD H:i:s', например: '2015-01-16 20:36:31'
169
     * @return mixed
170
     */
171
    public function publication($id, $date)
172
    {
173
        $params = array(
174
            'video' => $id,
175
            'timestamp' => $date,
176
        );
177
178
        return $this->getTransport()->publication($params);
179
    }
180
181
    /**
182
     * Получение информации для проигрывания видео
183
     *
184
     * @param string $id ID ролика
185
     * @param int|null $quality количество выдаваемых качеств
186
     * @param string|null $userAgent
187
     * @param string|null $userIP IP от имени которого выполнялся запрос
188
     * @param string|null $referer Referer от имени которого выполнялся запрос
189
     * @return mixed
190
     */
191
    public function getPlayOptions($id, $quality = null, $userAgent = null, $userIP = null, $referer = null)
192
    {
193
        $query = ($quality !== null) ? array('quality' => $quality) : array();
194
195
        if ($userAgent !== null) {
196
            $this->getTransport()->getClient()->setUserAgent($userAgent);
197
        }
198
199
        if ($userIP !== null) {
200
            $this->getTransport()->getClient()->setXRealIP($userIP);
201
        }
202
203
        if ($referer !== null) {
204
            $query['referer'] = $referer;
205
        }
206
207
        return $this->getTransport()->getVideoPlayOptions($id, $query);
208
    }
209
}
210