Vimeo: как использовать официальный клиент php для добавления белого списка доменов для видео?

#php #vimeo #vimeo-api

#php #vimeo #vimeo-api

Вопрос:

Я использую официальный PHP-клиент Vimeo.

Я могу загрузить видео и установить privacy.embed значение whitelist .

Затем док говорит мне:

Чтобы добавить домен в белый список, отправьте PUT запрос на /videos/{video_id}/privacy/domains/{domain} .

Я пытался

 $privacy_uri = $uri . "/privacy/domains/testdomain.tld";
$domain_add_response = $client->request($privacy_uri);
 

где
$uri является ли /vimeo/<video_id>
$client рождается из new Vimeo(CLIENT_ID, CLIENT_SECRET, VIMEO_TOKEN);

Проблема

При печати $domain_add_response я получаю 405 сообщение об ошибке, вероятно, из-за Allow (см. Следующий дамп ответа)

 Array
(
    [body] => 
    [status] => 405
    [headers] => Array
        (
            [Server] => nginx
            [Content-Type] => application/json
            [Allow] => PUT,DELETE,OPTIONS
            [X-Vimeo-DC] => ge
            [Accept-Ranges] => bytes
            [Via] => 1.1 varnish
            [Content-Length] => 0
            [Date] => Mon, 15 Apr 2019 08:30:47 GMT
            [Connection] => keep-alive
            [X-Served-By] => cache-bwi5125-BWI, cache-mxp19820-MXP
            [X-Cache] => MISS, MISS
            [X-Cache-Hits] => 0, 0
            [X-Timer] => S1555317047.232635,VS0,VE148
            [Vary] => Accept-Encoding
        )

)
 

Я полагаю, я должен установить PUT метод в своем запросе, но … как?

Комментарии:

1. Используете ли вы CURL для запросов? Можете ли вы показать нам код, который делает запрос?

2. Запрос делает не код.

3. @AndreiLupuleasa: $domain_add_response = $client->request($privacy_uri); точный ли код делает запрос!

4. И как мы узнаем, какой ->request метод выполняет и какие параметры принимает?

5. $client, как указано в вопросе, является официальным php-клиентом Vimeo. Исходный код здесь: https://github.com/vimeo/vimeo.php/blob/master/src/Vimeo/Vimeo.php#L88

Ответ №1:

Решение найдено при просмотре исходного кода api: https://github.com/vimeo/vimeo.php/blob/master/src/Vimeo/Vimeo.php#L88

где подпись request

 public function request($url, $params = array(), $method = 'GET', $json_body = true, array $headers = array()): array
 

Я понимаю, что могу решить проблему, просто передав пустой $params массив и PUT указав в качестве запроса $method

Я изменил эту строку

 $domain_add_response = $client->request($privacy_uri);
 

В эту форму

 $domain_add_response = $client->request($privacy_uri, [], 'PUT');
 

И это работает, как ожидалось