В новом уроке мы с вами рассмотрим работу с корзиной Яндекс.Диска через API с использованием PHP и Curl. Я вам расскажу о том как восстанавливать файлы из корзины и как очищать корзину.

Полный список всех записей курса находится на сайте https://prog-time.ru/course_cat/yandeks-disk-api-php/ или в публикациях на Хабр https://habr.com/ru/users/Prog-Time/posts/

Прежде чем работать с корзиной вам необходимо отправить запрос на получение ресурсов в корзине, чтобы точно знать пути к файлам в корзине, иначе у вас будет выводиться ошибка связанная с указанием неправильного пути.

Ранее мы уже рассматривали метод для получения ресурсов из корзины.

Запросы будут отправляться на https://cloud-api.yandex.net/v1/disk/trash/resources, а сам метод будет выглядеть так:

/**
 * Получение директорий
 *
 * @param array $arrParams параметры для получения ресурсов
 * @param string $typeDir тип области ресурсов
 *
 * @return array
 */
public function disk_resources(array $arrParams, string $typeDir = ''): array
{
  switch ($typeDir) {
      case 'trash':
          /* запрос для директорий в корзине */
          $urlQuery = 'https://cloud-api.yandex.net/v1/disk/trash/resources';
          break;
      default:
          /* запрос для активных директорий */
          $urlQuery = 'https://cloud-api.yandex.net/v1/disk/resources';
          break;
  }
  
  return $this->sendQueryYaDisk($urlQuery, $arrParams);

}

Восстановление файла или папки из Корзины Яндекс.Диска

Давайте начнём с восстановления файлов помещённых в корзину. Для восстановления файла мы будем отправлять запрос на:

https://cloud-api.yandex.net/v1/disk/trash/resources/restore.

В качестве параметра передаётся путь до ресурса и новое название файла.

path *

Путь к восстанавливаемому ресурсу относительно корневого каталога Корзины. Путь в значении параметра следует кодировать в URL-формате.

name

Новое имя восстанавливаемого ресурса. Например, selfie.png.

overwrite

Признак перезаписи. Учитывается, если ресурс восстанавливается в папку, в которой уже есть ресурс с таким именем.

Допустимые значения:
false — не перезаписывать файлы и отменить восстановление. Используется по умолчанию.
true — восстановить ресурс, удаляя имеющиеся файлы с совпадающими именами.

Путь до файла нужно прописывать в точности как нам возвращает его запрос на https://cloud-api.yandex.net/v1/disk/trash/resources.

/**
 * Метод для востановления файла из корзины
 *
 * @param  array $arrParams
 * @return array
 */
public function disk_trash_resources_restore(array $arrParams): array
{
    $urlQuery = 'https://cloud-api.yandex.net/v1/disk/trash/resources/restore';
    return $this->sendQueryYaDisk($urlQuery, $arrParams, 'PUT');
}

Пример параметров передаваемых в запрос на восстановление файлов.

$arrParams = [
    'path' => 'trash:/%2Fuploads_750d7fff9b63b29538e5f4d8961a599c3517a76b',
    'name' => 'uploads_test',
];

$backupClass = new Backup();
$resultQuery = $backupClass->disk_trash_resources_restore($arrParams);

Удаление файлов из корзины Яндекс.Диска через API

Для того чтобы отчистить корзину в Яндекс.Диске через API нужно отправить запрос на https://cloud-api.yandex.net/v1/disk/trash/resources с параметром path указывающим путь до файла который нужно удалить.

Если вы не передадите параметр path, то корзина отчистится полностью.

/**
 * Метод для удаления файлов из корзины
 *
 * @param  array $arrParams
 * @return array
 */
public function disk_trash_resources_delete(array $arrParams): array
{
    $urlQuery = 'https://cloud-api.yandex.net/v1/disk/trash/resources';
    return $this->sendQueryYaDisk($urlQuery, $arrParams, 'DELETE');
}

В новом уроке мы с вами рассмотрели методы для работы с корзиной, научились восстанавливать и удалять файлы из корзины.

В следующем уроке я вам покажу упрощённую версию класса для работы с API Яндекс.Диска.

Комментарии (2)


  1. pantsarny
    20.07.2023 18:32
    +1

    Почему бы не использовать библиотеку, которую рекомендует Яндекс?


    1. pantsarny
      20.07.2023 18:32
      +2

      Ну и к коду есть вопросы, что это за куски класса? Почему названия методов в разных способах именования? Для чего в методах хранятся полные урлы?