jack-theripper / yandex

PHP SDK для работы с Яндекс Диском yandex disk
MIT License
127 stars 39 forks source link

only notfound #29

Closed XNicON closed 6 years ago

XNicON commented 6 years ago

Начал работать и возникают такие проблемы, проверка на существование возвращает false, когда файл существует на самом деле, к файлу доступ запрещён.

jack-theripper commented 6 years ago

Привет, можешь подробнее рассказать что делает этот код, почему эту часть кода нужно изменить ?


Метод has должен возвращать boolean, т.е. true/false, но null !== false, кроме того если api перестанет работать метод выбросит исключение ServiceException или любое другое, чего в принципе не должно быть чтобы не оборачивать каждый if $var->has() в блок try/catch

XNicON commented 6 years ago

Привет. Спасибо что так быстро реагируешь. Теоретически функция вернёт null, но практически не понимаю когда это может произойти. так как toArray возвращает либо данные, либо исключение. но да тогда ловить в if ->has исключения.

Не знаю, как описать конкретно в чём смысл. Опишу свой случай.

Могу загружать файлы. Загрузил, но при проверке на существование, возвращал просто false. Когда файл существовал. (по задаче, перезаписывать нельзя) На что я просто не понимал почему.

В итоге, нашёл, что я.диск возвращал, исключение Доступ запрещён. как его чекнуть при проверке на существование я не совсем понял.

Хотя это скорее просто баг, всё решилось переопределением прав на чтение.

jack-theripper commented 6 years ago

Я не могу принять PR, сомневаюсь что эта ситуация относится к недостатку библиотеки. Возможно, стоило запросить новый токен или api возвращал результат с задержкой. Метод upload может перезаписывать файл. Я подумаю, скорее всего попробую добавить необходимую проверку в метод send, но это плохое решение has не должен выбрасывать исключение. могу посоветовать


try
{
    $has = (bool) $var->toArray();
}
catch (ForbiddenException $exc)
{
    // тут
}
XNicON commented 6 years ago

Спасибо за развёрнутый ответ. Хорошо, закрываем.