Video::upload()   B
last analyzed

Complexity

Conditions 5
Paths 16

Size

Total Lines 37
Code Lines 25

Duplication

Lines 0
Ratio 0 %

Importance

Changes 5
Bugs 0 Features 0
Metric Value
c 5
b 0
f 0
dl 0
loc 37
rs 8.439
cc 5
eloc 25
nc 16
nop 9

How to fix   Many Parameters   

Many Parameters

Methods with many parameters are not only hard to understand, but their parameters also often become inconsistent when you need more, or different data.

There are several approaches to avoid long parameter lists:

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