{"id":15634898,"url":"https://github.com/jack-theripper/yandex","last_synced_at":"2025-04-05T08:06:15.969Z","repository":{"id":33690257,"uuid":"37343048","full_name":"jack-theripper/yandex","owner":"jack-theripper","description":"PHP SDK для работы с Яндекс Диском yandex disk","archived":false,"fork":false,"pushed_at":"2022-11-21T07:37:10.000Z","size":325,"stargazers_count":129,"open_issues_count":18,"forks_count":39,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-03-29T07:05:29.168Z","etag":null,"topics":["disk","php","yandex","yandex-disk"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jack-theripper.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-06-12T20:29:22.000Z","updated_at":"2025-02-15T21:07:17.000Z","dependencies_parsed_at":"2023-01-15T02:05:02.215Z","dependency_job_id":null,"html_url":"https://github.com/jack-theripper/yandex","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jack-theripper%2Fyandex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jack-theripper%2Fyandex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jack-theripper%2Fyandex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jack-theripper%2Fyandex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jack-theripper","download_url":"https://codeload.github.com/jack-theripper/yandex/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247305933,"owners_count":20917208,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["disk","php","yandex","yandex-disk"],"created_at":"2024-10-03T10:58:52.624Z","updated_at":"2025-04-05T08:06:15.948Z","avatar_url":"https://github.com/jack-theripper.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n## Введение\n\nНеофициальное PHP SDK для некоторых сервисов Яндекса: сервис Яндекс.Диск.\n\n## Список изменений\n\n21/11/2022\n\n- PHP 7.4, 8.0, 8.1\n\n21/12/2020\n\n- Начиная с 2.1 минимальная версия php 7.3\n- zend-diactoros заменён на laminas-diactoros (laminas-zendframework-bridge)\n\n23/08/2016\n\n- метод `upload` поддерживает событие `progress`, слушатель принимает `float` значение в процентах.\n- возвращена ранее удалённая опция `disable_redirects`.\n- исправление грамматических ошибок в `README.md`\n\n## Требования\n\n- PHP \u003e= 5.6\n- Расширение php_curl\n\n## Внести свой вклад в развитие\n\nВы можете сообщить о найденных неточностях в работе SDK, приветствуется помощь в разработке. Чтобы начать помогать вести разработку Вам нужно создать fork репозитория ветки **development**, внесите изменения в код и отправьте pull request нам с изменениями в ветку **development**.\n\n## Установка\n\nПоддерживается установка с помощью [менеджера пакетов](https://getcomposer.org).\n\n```\n$ composer require arhitector/yandex dev-master\n```\n\nИли \n\n```\n$ php composer.phar require arhitector/yandex dev-master\n```\n\n## Тесты\n\nВы можете не найти некоторых тестов - мы их не публикуем по причинам приватности.\n\n```\n$ composer test\n```\n\n## 1. Сервис Яндекс.Диск\n### 1.1. Введение\n\nPHP SDK для работы с Яндекс.Диском, в своей основе использует REST API диска. API диска для аунтификации использует OAuth-токен (например, *0c4181a7c2cf4521964a72ff57a34a07*), который Вы должны получить самостоятельно:\n- зарегистрировать приложение и самостоятельно получить токен https://oauth.yandex.ru\n- или воспользоваться возможностями SDK, читайте о методе *AccessToken::refreshAccessToken* (RFC 6749#4.3.2. в скором времени, а возможно уже, будет отключен)\n\nSDK работает только с отладочными токенами. OAuth-токен должен иметь разрешённые права \"**Яндекс.Диск REST API**\".\n\n**Ресурс** - файл или папка на Яндекс.Диске. SDK определяет три состояния ресурса: **публичный**, **закрытый**, и тот который **помещён в корзину**.\n\n### 1.1.1. Возможности\n\nОсновные моменты\n\n- Работа с файлами на Яндекс.Диске (получение информации, копирование, перемещение, загрузка, скачивание и т.д.)\n- Работа с публичными ресурсами (публикация, скачивание, копирование на свой Яндекс.Диск, и т.п.)\n- Работа с ресурсами в корзине (список файлов в корзине, очистка корзины, восстановление файла из корзины и прочее)\n- Поддерживает события: 'operation', 'downloaded', 'uploaded', 'deleted'\n- ~~Шифрование файлов (не поддерживается, используйте ветку 1.0)~~\n- Получение ссылок DocViewer\n\nвозможно это не полный список\n\n### Плагины, дополнения, адаптеры\n\n- адаптер [yandex-disk-flysystem](https://github.com/jack-theripper/yandex-disk-flysystem) для [thephpleague/flysystem](https://github.com/thephpleague/flysystem) (существующий адаптер WebDav хорош, но не позволяет публиковать ресурсы - тут эта возможность имеется).\n\n## 1.1.2. Папки приложений\n\nПриложения могут хранить на Диске пользователя собственные данные — например, настройки, сделанные этим пользователем или созданные им файлы.\nЧтобы запрашивать доступ к собственной папке на Диске, приложение следует зарегистрировать с правом \"**Доступ к папке приложения на Диске**\".\nТакое приложение сможет оперировать файлами только в рамках своей папки, если не получит также прав на общий доступ к Диску.\nSDK различает общий доступ и доступ приложения к собственной папке, префиксами \"**disk:/**\" и \"**app:/**\" соответственно.\nТем не менее в информации о ресурсе пути указываются в схеме disk:/, с абсолютными путями к ресурсам, например \"*disk:/Приложения/МоёПервоеПриложение/photo.png*\".\n\n## 1.1.3. Пример использования\n\n```php\n\n// передать OAuth-токен зарегистрированного приложения.\n$disk = new Arhitector\\Yandex\\Disk('OAuth-токен');\n\n/**\n * Получить Объектно Ориентированное представление закрытого ресурса.\n * @var  Arhitector\\Yandex\\Disk\\Resource\\Closed $resource\n */\n$resource = $disk-\u003egetResource('новый файл.txt');\n\n// проверить сущестует такой файл на диске ?\n$resource-\u003ehas(); // вернет, например, false\n\n// загрузить файл на диск под имененм \"новый файл.txt\".\n$resource-\u003eupload(__DIR__.'/файл в локальной папке.txt');\n\n// файл загружен, вывести информацию.\nvar_dump($resource-\u003etoArray())\n\n// теперь удалить в корзину.\n$removed = $resource-\u003edelete();\n```\n\nSDK вызывает исключения по каждой ситуации, следующий пример показывает как это можно использовать.\n\n```php\ntry\n{\n  try\n  {\n    /**\n     * Получить закрытый ресурс\n     * @var  Arhitector\\Yandex\\Disk\\Resource\\Closed $resource\n     */\n    $resource = $disk-\u003egetResource('новый файл.txt');\n\n    // До этого момента запросов к Диску не было\n    // Только сейчас был сделан запрос на получение информации о ресурсе к Яндекс.Диску\n    // Вывести информацию. Когда ресурс не найден будет вызвано исключение NotFoundException\n    $resource-\u003etoArray();\n  }\n  catch (Arhitector\\Yandex\\Client\\Exception\\NotFoundException $exc)\n  {\n    // Ресурс на Диске отсутствует, загрузить под именем 'новый файл.txt'\n    $resource-\u003eupload(__DIR__.'/файл в локальной папке.txt');\n  }\n\n  // Теперь удалю, совсем.\n  $file-\u003edelete(true);\n}\ncatch (Arhitector\\Yandex\\Client\\Exception\\UnauthorizedException $exc)\n{\n\t// Записать в лог, авторизоваться не удалось\n\tlog($exc-\u003egetMessage());\n}\ncatch (Exception $exc)\n{\n\t// Что-то другое\n}\n```\n\n## 1.2. Как подключиться к Яндекс.Диску\n\nОбращение к Яндекс.Диску осуществляется через **Arhitector\\Yandex\\Disk**. После получения OAuth-токена, его (OAuth-токен) можно использовать следующим образом:\n\n- Вариант 1. Инициализировать клиент.\n\nОдин и тот же OAuth-токен может быть использован для доступа к разным сервисам.\n\n```php\n$client = new Arhitector\\Yandex\\Client\\OAuth('OAuth-токен');\n```\n\nИнициализировать клиент Яндекс.Диска и передать `$client`.\n\n```php\n$disk = new Arhitector\\Yandex\\Disk($client);\n```\n\n- Вариант 2. Инициализировать клиент Яндекс.Диска с передачей OAuth-токена в конструктор.\n\n```php\n$disk = new Arhitector\\Yandex\\Disk('OAuth-токен');\n```\n\n- Вариант 3. Инициализировать клиент Яндекс.Диска без передачи OAuth-токена.\n\nВы можете установить или изменить OAuth-токен в ранее инициализированном объекте.\n\n```php\n$client-\u003esetAccessToken('OAuth-токен');\n```\n\nИли изменить OAuth-токен для клиента Яндекс.Диска\n\n```php\n$disk-\u003esetAccessToken('OAuth-токен');\n```\n\nНа этом этапе есть несколько переменных, например `$disk` и `$client`, которые будут использованы далее в документации для отсылки к определённым объектам.\n\n```php\n/**\n * @var Arhitector\\Yandex\\Client\\OAuth  $client\n * @var Arhitector\\Yandex\\Disk          $disk\n */\n```\n\n\u003e Примечание: Arhitector\\Yandex\\Client\\OAuth не является реализацией протокола OAuth 2.0.\n\n### 1.2.1. Установить OAuth-токен\n\nУстанавливает OAuth-токен для прохождения аунтификации на сервисах. Не все операции требуют OAuth-токен.\n\n```php\npublic $this OAuth::setAccessToken(string $token)\n\npublic $this Disk::setAccessToken(string $token)\n```\n\n**Примеры**\n\n```php\n$disk-\u003esetAccessToken('0c4181a7c2cf4521964a72ff57a34a07');\n```\n\nили\n\n```php\n$client-\u003esetAccessToken('0c4181a7c2cf4521964a72ff57a34a07');\n```\n\n### 1.2.2. Получить установленный OAuth-токен\n\nПолучает ранее установленный OAuth-токен или `NULL`.\n\n```php\npublic mixed OAuth::getAccessToken( void );\n\npublic mixed Disk::getAccessToken( void );\n```\n\n**Примеры**\n\n```php\n$disk-\u003egetAccessToken(); // null\n```\n\nили\n\n```php\n$client-\u003egetAccessToken(); // string '0c4181a7c2cf4521964a72ff57a34a07'\n```\n\n## 1.3. Работа с Яндекс.Диском\n\nSDK различает три типа ресурсов: **публичный**, **закрытый**, и тот который **помещён в корзину**. Каждый из типов представлен своим объектом. Для любого типа ресурса доступна фильтрация (методы **setMediaType**, **setType** и т.д.) у каждого из типов свой набор возможных значений.\n\n- Публичный ресурс, `Arhitector\\Yandex\\Disk\\Resource\\Opened`\n\n- Ресурс доступный владельцу, `Arhitector\\Yandex\\Disk\\Resource\\Closed`\n\n- Ресурс в корзине, `Arhitector\\Yandex\\Disk\\Resource\\Removed`\n\n### Введение\n\nСуществуют базовые методы получения всевозможного рода информации, которые доступны везде. Кроме прочего, поддерживаются обращения к фиктивным свойствам и работа с объектом как с массивом.\n\n- Объект-\u003eсвойство\n\n```php\n$disk-\u003etotal_space; // объём диска\n\n$resource-\u003esize; // размер файла\n```\n\n- Объект['свойство']\n\n```php\n$disk['free_space']; // свободное место\n\n$resource['name']; // название файла/папки\n```\n\n### 1.3.1. Метод get\n\nПолучить значение по ключу.\n\n```php\npublic mixed Объект::get(string $index [, mixed $default = null])\n```\n\n`$index` - индекс/ключ, по которому получить значение (`free_space`, `name` и т.д.)\n\n\n`$default` - значение по умолчанию, если такой индекс отсутствует - может принимать анонимную функцию, которая будет вызвана с текущим контекстом (`Disk`, `Closed`, и т.д.)\n\n**Примеры**\n\n```php\n// индекс total_space\n$disk-\u003eget('total_space');\n\n// custom_properties или FALSE если отсутствует\n$resource-\u003eget('custom_properties', false);\n\n // вернёт результат 'any thing' анонимной функции \n$removedResource-\u003eget('property_123', function (Removed $resource) {\n  return 'any thing';\n});\n```\n\n### 1.3.2. Метод toArray\n\nПолучает содержимое всего контейнера в виде массива.\n\n\u003e Примечание: метод не является рекурсивным, это означает, что вложенные ресурсы (например, файлы в папке) не будут преобразованы в массив, а результатом будет массив объектов т.е. массив ресурсов (файлы, папки), представленные своим объектом.\n\n```php\npublic array Объект::toArray([array $allowed = null])\n```\n\n`$allowed` - массив ключей, которые необходимо вернуть.\n\n**Примеры**\n\n```php\n// массив информация о Яндекс.Диске\n$disk-\u003etoArray();\n\n// получить только \n$disk-\u003etoArray(['total_space', 'free_space']);\n\n// массив объектов\n$collection-\u003etoArray();\n\n// массив, информация о ресурсе\n$resource-\u003etoArray();\n```\n\n### 1.3.3. Метод toObject\n\nПолучает содержимое всего контейнера в виде объекта.\n\n\u003e Примечание: метод не является рекурсивным, это означает, что вложенные ресурсы (например, файлы в папке) не будут преобразованы в объект, а результатом будет коллекция объектов.\n\n```php\npublic stdClass Объект::toObject([array $allowed = null])\n```\n\n`$allowed` - получить только эти ключи.\n\n\n**Примеры**\n\n```php\n$disk-\u003etoObject();\n\n$collection-\u003etoObject();\n\n$resource-\u003etoObject(['name', 'type']);\n```\n\n### 1.3.4. Метод getIterator\n\nПолучает итератор. Вы можете использовать объекты SDK в циклах.\n\n```php\npublic ArrayIterator Объект::getIterator( void )\n```\n\n**Примеры**\n\n```php\n$disk-\u003egetIterator();\n\n$collection-\u003egetIterator();\n\n$resource-\u003eitems-\u003egetIterator();\n```\n\nПроход циклом, например, `$resource` является папкой. Получим вложенные файлы/папки в эту папку. \n\n```php\nforeach ($resource-\u003eitems as $item)\n{\n  // $item объект ресурса `Resource\\\\*`, вложенный в папку.\n}\n```\n\n### 1.3.5. Метод count\n\nПодсчитывает количество чего-то.\n\n```php\npublic integer Объект::count( void )\n```\n\nВозвращает количество асинхронных операций экземпляра:\n\n- Disk::count() \n\nВозвращает количество полей:\n\n- Resource\\\\*::count()\n\n**Примеры**\n\n```php\n// Возвращает количество асинхронных операций экземпляра.\n$disk-\u003ecount();\n\n// в других случаях размер контейнера\n$resource-\u003eitems-\u003ecount();\n```\n\n### 1.3.6. Методы has, hasProperty\n\n#### Метод has\n\nПоведение метода `has` отличается в зависимости от контекста. Может проверить существует ли свойство или существует ли такой ресурс на Яндекс.Диске.\n\n\u003e Примечание: возможно в будущем поведение метода будет упрощено.\n\n```php\npublic bool Объект::has([string $key = NULL])\n```\n\n`$key` - необязательный параметр, индекс.\n\n- Вызов с параметром проверяет свойство на существование\n\n```php\n$disk-\u003ehas('total_space_123'); // false\n\n$resource-\u003ehas('name'); // true\n```\n\n- Вызов без параметров поддерживается только в контексте ресурса `Resource\\\\*` и проверяет ресурс на существование.\n\n```php\n$resource-\u003ehas(); // true\n```\n\n#### Метод hasProperty\n\nТоже самое что и метод `has`, но выполняет только одно действие - проверка свойства на существование и доступен только в контексте ресурса `Resource\\\\*`\n\n```php\npublic boolean Объект::hasProperty(string $key)\n```\n\n`$key` - индекс/свойство для проверки на существование.\n\n\n**Примеры**\n\n```php\n$resource-\u003ehasProperty('custom_properties'); // false\n```\n\n### 1.3.7. Получение информации о диске.\n\nМетоды получения информации описаны выше.\n\n```php\n$disk-\u003etoArray();\n```\n\nВернёт массив, примерно такого содержания. Метод `toObject` возвращает соответственно объект.\n\n```php\narray (size=5)\n    'trash_size' =\u003e int 187017199\n    'total_space' =\u003e float 14495514624\n    'used_space' =\u003e float 14083430863\n    'system_folders' =\u003e array (size=2)\n        'applications' =\u003e string 'disk:/Приложения' (length=26)\n        'downloads' =\u003e string 'disk:/Загрузки/' (length=23)\n    'free_space' =\u003e float 412083761\n```\n\nМетод `count` тут вернёт количество инициированных асинхронных операций.\n\n```php\n$disk-\u003ecount(); // int 0\n\ncount($disk); // int 5\n```\nДоступные ключи для метода `get`\n\n- trash_size - размер корзины в байтах.\n- total_space - объём диска в байтах.\n- used_space - использованное место в байтах.\n- free_space - свободное место в байтах.\n- system_folders - массив содержит пути к системным папкам.\n\n```php\n// метод get\n$disk-\u003eget('total_space'); // float 14495514624\n\n// объект-\u003eсвойство\n$disk-\u003eused_space; // float 14083430863\n\n// объект['свойство']\n$disk['system_folders'];\n\n/* array (size=2)\n'applications' =\u003e string 'disk:/Приложения' (length=26)\n'downloads' =\u003e string 'disk:/Загрузки/' (length=23) */\n\n// используем параметр $default\n$disk-\u003eget('не существующее свойство', 'default value'); // string 'default value'\n```\n\n### 1.3.8. Работа с закрытыми ресурсами.\n\nРабота с ресурсами на диске осуществляется через метод ы `Disk::getResource` и `Disk::getResources`, доступ к которым имеет владелец диска. Не имеет значения существует ли ресурс на диске в данный момент или нет. Разница в том, что когда ресурс существует - есть возможность запросить информацию о ресурсе в другом случае будет вызвано исключение NotFoundException. По факту для ресурса, который еще не существует доступна только операция загрузки на диск - **upload**, после чего операции публикации, удаления и т.п. смогут корректно выполняться.\n\n#### Метод Disk::getResource\n\nПолучает объектно ориентированное представление конкретного ресурса на Яндекс.Диске. Доступ к такому ресурсу имеет владелец диска.\n\n```php\npublic Resource\\Closed Disk::getResource(string $path [, int $limit = 20 [, int $offset = 0]])\n```\n\n`$path` - Путь к новому либо уже существующему ресурсу.\n\n\n`$limit` - Количество ресурсов в ответе.\n\n\n`$offset` - Смещение. Задаётся для списка всех файлов или если ресурс является папка, то задаёт смещение вложенных в папку ресурсов.\n\n**Примеры**\n\nПолучить объект ресурса.\n\n```php\n/**\n * @var Arhitector\\Yandex\\Disk\\Resource\\Closed  $resource\n */\n$resource = $disk-\u003egetResource('/путь от корня диска/до файла/или папки/название.txt');\n\n$resource = $disk-\u003egetResource('disk:/путь от корня диска/до файла/или папки/название.txt');\n```\n\nПолучить объект ресурса из папки приложения.\n\n```php\n/**\n * @var Arhitector\\Yandex\\Disk\\Resource\\Closed  $resource\n */\n$resource = $disk-\u003egetResource('app:/название.txt', 100, 10);\n```\n\nУстановить `$limit` и `offset` можно и после получения объекта ресурса методами `setLimit` и `setOffset`.\n\n```php\n$resource = $disk-\u003egetResource('/', 10);\n\n$resource = $disk-\u003egetResource('/', 10, 5);\n\n$resource-\u003esetLimit(100);\n\n$resource-\u003esetOffset(200);\n```\n\n#### Метод Disk::getResources, список всех файлов.\n\nПолучает список всех файлов в папках, под папках и т.д. Список представлен объектом `Arhitector\\Yandex\\Disk\\Resource\\Collection`. \n\n```php\npublic Resource\\Collection Disk::getResources([, int $limit = 20 [, int $offset = 0]])\n```\n\nЗдесь доступны методы фильтрации, основные методы получения информации и ряд других.\n\n**Примеры**\n\n```php\n/**\n * Получить список всех файлов\n *\n * @var Disk\\Resource\\Collection  $collection\n */\n$collection = $disk-\u003egetResources();\n\n$disk-\u003egetResources(100, 15);\n```\n\nСписок файлов в папках также представлен объектом `Arhitector\\Yandex\\Disk\\Resource\\Collection`\n\n```php\n$resource-\u003eitems; // object 'Arhitector\\Yandex\\Disk\\Resource\\Collection'\n```\n\n##### Метод getFirst\n\nПолучает *первый* ресурс в списке. Это может быть `Closed`, `Opened`, `Removed`.\n\n```php\npublic mixed Collection::getFirst( void )\n```\n\n**Примеры**\n\n```php\n$collection-\u003egetFirst(); // object 'Resource/Closed'\n```\n\n##### Метод getLast\n\nМетод коллекции, получает последний элемент.\n\n```php\npublic mixed Collection::getLast( void )\n```\n\n**Примеры**\n\n```php\n$collection-\u003egetLast(); // object 'Resource/Opened'\n```\n\n##### Методы фильтрации\n\nВсе это дело происходит на стороне API. Для коллекции доступны методы\n\n- setLimit\n- setMediaType\n- setOffset\n- setPreviewCrop\n- setPreview\n- setSort\n\n### 1.3.8.1. Проверить ресурс на существование\n\nПроверить, существует ли ресурс на диске поможет ранее описанный метод `has` (вызывается без параметров). Если использовать с параметром - проверяет существует ли свойство.\n\n\u003e Примечание: возможно в будущем метод будет упрощен.\n\n**Примеры**\n\n```php\n$resource-\u003ehas();\n\n$resource-\u003ehas('name'); // проверить, есть ли 'name'\n```\n\n### 1.3.8.2. Получение информации о ресурсе\n\nОсуществляется с помощью основных методов получения информации, описанных ранее.\n\n**Примеры**\n\n```php\n$resource-\u003etoObject();\n\n$resource-\u003eget('items');\n\n$resource-\u003ehasProperty('name');\n\n$resource-\u003ehas('type');\n\n$resource-\u003etoArray(['name', 'type', 'size']);\n\n$resource-\u003esize;\n\n$resource['type'];\n\n$resource-\u003eget('custom_properties', []);\n```\n\n### 1.3.8.3. Ресурс является файлом/папкой\n\nДля этого существуют методы **isFile** и **isDir**.\n\n```php\npublic boolean Объект::isFile( void )\n\npublic boolean Объект::isDir( void )\n```\n\n**Примеры**\n\n```php\n$resource-\u003eisFile(); // true\n\n$resource-\u003eisDir(); // false\n```\n\n### 1.3.8.4. Ресурс публичный/или доступен только владельцу\n\nПроверить открыт ли доступ к файлу или папке позволяет метод `isPublish`\n\n```php\npublic boolean Объект::isPublish( void )\n```\n\n**Примеры**\n\n```php\n$resource-\u003eisPublish(); // false\n\n// отрыть доступ к ресурсу\nif ( ! $resource-\u003eisPublish())\n{\n  $resource-\u003esetPublish(true);\n}\n```\n\n### 1.3.8.5. Путь к ресурсу на диске\n\nДля этого можно воспользоваться методом `getPath`. Этот путь использует SDK, но  хоть значение может и отличаться от того, которое может возвращать Яндекс.Диск, такое не совпадение вполне корректно.\n\n```php\npublic string Объект::getPath( void )\n```\n\nПримеры\n\n```php\n$resource-\u003egetPath(); // disk:/файл.txt\n```\n\n### 1.3.8.6. Добавление/удаление метаинформации для ресурса\n\nДобавленная метаинформация хранится в свойстве \"custom_properties\". Максимальная длина объекта (ключи + значения) 1024 байта. Значение не должно быть `NULL`.\n\n```php\npublic $this Closed::set(mixed $meta [, mixed $value = null])\n```\n\n`$meta` - строка либо массив значений.\n\n\n`$value` - `NULL` чтобы удалить определённую метаинформацию когда `$meta` строка.\n\n**Примеры**\n\n```php\n$resource-\u003eset('any', 'thing');\n\n$resource-\u003eset([\n  'any'   =\u003e 'thing',\n  'thing' =\u003e 'any'\n]);\n\n$resource['any'] = 'thing';\n\n$resource-\u003eany = 'thing';\n\n```\n\n#### Удаление информации\n\nЧтобы удалить метаинформацию необходимо установить значение `NULL`.\n\n**Примеры**\n\n```php\n$resource-\u003eset('any', null); // удалить 'any'\n\n$resource-\u003eset('thing'); // удалить 'thing'\n\nunset($resource['any']);\n\nunset($resource-\u003eany);\n```\n\n#### метод getProperty\n\nРаботает со свойством \"custom_properties\" - в нём хранится добавляемая метаинформация. Метод похож на метод `get`.\n\n\u003e Примечание: возможно в будущем метод будет переименован.\n\n```php\npublic mixed Closed::getProperty(string $index [, mixed $default = null])\n```\n\n`$index` - ключ, по которому получить значение.\n\n\n`$default` - значение по умолчанию, если такой индекс отсутствует - может принимать анонимную функцию, которая будет вызвана с текущим контекстом (только Resource\\Closed).\n\n**Примеры**\n\n```php\n$resource-\u003egetProperty('any');\n\n$resource-\u003eget('thing12141', 'значение по умолчанию'); // вернет значение по умолчанию\n\n$resource-\u003eget('index', function (Resource\\Closed $resource) {\n  // анонимная функция будет вызвана с параметром\n  // текущего контекста и значение по умолчанию\n  // будет значение, возвращаемое этой функцией\n\n  return 'значение по умолчанию';\n});\n\n```\n\n#### Метод getProperties\n\nПолучает массив всей метаинформации.\n\n```php\npublic array Closed::getProperties( void )\n```\n\n**Примеры**\n\n```php\n$resource-\u003egetProperties(); // array\n\n// метод 'get' также может получать метаинформацию.\n// получить всю доступную метаинформацию в виде массива\n$resource-\u003eget('custom_properties', []);\n\n// получение информации без использования метода 'getProperty'\n$resource-\u003eget('custom_properties')['thing12141']\n```\n\n### 1.3.8.7. Удаление файла или папки\n\nУдалить совсем или поместить файл или папку в корзину можно методом `delete`.\n\n```php\npublic mixed delete([bool $permanently = false])\n```\n\n`$permanently` - признак безвозвратного удаления. `FALSE` поместит ресурс в корзину (поведение по умолчанию).\n\n**Возвращаемые значения:**\n\n- `boolean` - результат выполнения.\n\n- `Arhitector\\Yandex\\Disk\\Operation` - объект синхронной операции, если по мнению API Яндекс.Диска операция удаления длительная.\n\n- ~~`Arhitector\\Yandex\\Disk\\Resource\\Removed` - объект ресурса в корзине (не поддерживается).~~\n\n**Примеры**\n\n```php\n$resource-\u003edelete(); // в корзину\n\n$resource-\u003edelete(true); // удалить без помещения в корзину\n```\n\n### 1.3.8.8. Перемещение файла или папки\n\nПеремещать файлы и папки на Диске можно, указывая новое положение ресурса.\n\n```php\npublic mixed Closed::move(mixed $destionation [, $overwrite = FALSE] )\n```\n\n`$destination` - новое расположение ресурса. Может быть `строкой` или `Resource\\Closed`.\n\n\n`$overwrite` - `boolean` признак перезаписи, если по новому пути существует ресурс. `TRUE` перезапишет (поведение по умолчанию `FALSE` - не перезаписывать).\n\n**Возвращаемые значения**\n\n`bool` или объект `Arhitector\\Yandex\\Disk\\Operation`\n\n**Примеры**\n\n```php\n$resource-\u003emove('/путь/до/файла.txt');\n\n$resource-\u003emove('app:/новая папка', true);\n\n$resource-\u003emove($resource2);\n```\n\n### 1.3.8.9. Создание папки\n\nЕсли ресурс уже существует будет вызвано исключение `AlreadyExists`.\n\n```php\npublic $this Closed::create( void )\n```\n\n**Примеры**\n\n```php\n$resource-\u003ecreate();\n```\n\n### 1.3.8.10. Публикация ресурса\\Закрытие доступа\n\nОткрывает доступ к ресурсу из вне по публичной ссылке. Опубликованные ресурсы управляются своим объектом `Arhitector\\Yandex\\Disk\\Resource\\Opened`.\n\n```php\npublic mixed Closed::setPublish([bool $publish = true])\n```\n\n`$publish` - признак публичности, `TRUE` сделать ресурс публичным (поведение по умолчанию), `FALSE` отменить публикации ресурса.\n\n**Возвращаемые значения**\n\n`Arhitector\\Yandex\\Disk\\Resource\\Closed` возвращается когда доступ закрыт.\n\n\n`Arhitector\\Yandex\\Disk\\Resource\\Opened` возвращается если был открыт доступ к ресурсу.\n\nУ ресурса с открытым доступом существует дополнительная информация, такая как `public_key` или `public_url`. Также `docviewer` возвращает ссылку доступную всем из вне.\n\n**Примеры**\n\n```php\n$resource-\u003esetPublish(); // открывает доступ\n\n$resource-setPublish(true); // открывает доступ\n\n$resource-\u003esetPublish(false); // закрывает доступ\n\n$resource-\u003eisPublish(); // true если ресурс с открытым доступом\n\n$resource-\u003epublic_url; // URL адрес\n```\n### 1.3.8.11. Скачивание файла\n\nМетод `download` безопасен от переполнения памяти и может быть использован для скачивания файлов и папок (автоматически в виде zip-архива).  \n\n```php\npublic bool Closed::download(mixed $destination [, bool $overwrite = false])\n```\n\n`$destination` - позволяет указать куда будет сохранён ресурс.\n\nПоддерживаются следующие типы:\n\n- `string` - путь, по которому будет записан ресурс.\n- `resource` - дескриптор файла, открытый на запись.\n- `StreamInterface` - объект на запись, реализующий PSR StreamInterface.\n\n`$overwrite` - используется совместно с `$destination` строкового типа `string`, определяет поведение (перезаписать/не перезаписывать), если по такому пути существует локальный файл.\n\n**Возвращаемые значения**\n\n`TRUE` или `FALSE`, а также вызывает исключения по типовым событиям, например, `AlreadyExistsException` или `NotFoundException`.\n\n**Примеры**\n\nСкачать файл в локальную папку.\n\n```php\n// без перезаписи\n$resource-\u003edownload(__DIR__.'/файл.txt');\n\n// без перезаписи\n$resource-\u003edownload(__DIR__.'/файл.txt', false);\n\n// с перезапсью\n$resource-\u003edownload(__DIR__.'/файл.txt', true);\n```\n\nЗапись в открытый дескриптор.\n\n```php\n// открыть любой дескриптор\n$fp = fopen(__DIR__.'/файл.txt', 'wb+');\n\n// или и т.д.\n$fp = fopen('php://memory', 'r+b');\n\n$resource-\u003edownload($fp);\n\n// продолжить работу ...\nfseek($fp, 0);\n```\n\nИспользовать обертку над потоком так же просто.\n\n```php\n$stream = new Stream('php://temp', 'r+');\n\n$resource-\u003edownload($stream);\n\nvar_dump($stream-\u003egetSize());\n```\n\n### 1.3.8.12. Копирование файла или папки\n\nСделать копию ресурса.\n\n```php\npublic bool Closed::copy(mixed $destination [,bool  $overwrite = false])\n```\n\n`$destination` - путь до нового ресурса.\n\nМожет принимать значения:\n\n- `string` - строка, путь от корня папки приложения или  корня Яндекс.Диска.\n- `Arhitector\\Yandex\\Disk\\Resource\\Closed` - инициализированный объект другого ресурса.\n\n`$overwrite` - признак перезаписи, если по указанному пути существует ресурс. Поведение по умолчанию `FALSE`.\n\n**Возвращаемые значения**\n\n`TRUE` или `FALSE`, а также `Arhitector\\Yandex\\Disk\\Operation` в случае длительного копирования.\n\n**Примеры**\n\n```php\n// сделать копию файла\n$resource-\u003ecopy('папка/файл-копия.txt');\n\n// сделать копию папки\n$resource-\u003ecopy('app:/папка-копия');\n\n// сделать копию $resource по пути 'копия/путь до файла.txt'\n$resource2 = $disk-\u003egetResource('копия/путь до файла.txt');\n$resource-\u003ecopy($resource2, true);\n```\n\n### 1.3.8.13. Загрузка файла\n\nМетод `upload` безопасен от утечки памяти и используется для загрузки файлов на Яндекс.Диск. Может загружать как файлы расположенные локально, в локальной папке, так и, файлы расположенные на удаленном хостинге/сервере и доступные по URL-адресу.\n\n```php\npublic mixed upload(mixed $file_path [, bool $overwrite = false [, bool $disable_redirects = false]])\n```\n\n`$file_path` - может быть как путь к локальному файлу, так и URL к файлу.\n\nПринимает значения:\n\n- `string` - путь до локального файла или URL-адрес.\n- `resource` - дескриптор файла, открытый на чтение.\n\n`$overwrite` - признак перезаписи, если ресурс на Яндекс.Диске существует. Параметр не влияет на загрузку файлов по URL-адресу.\n\n`$disable_redirects` - параметр влияет на файлы, загружаемые по URL-адресу. `TRUE` помогает запретить перенаправление по адресу. Поведение по умолчанию `FALSE` - пре адресация разрешена.\n\n**Примеры**\n\nЗагрузка локального файла.\n\n```php\n$resource-\u003eupload(__DIR__.'/файл.txt');\n\n// загрузка с перезаписью\n$resource-\u003eupload(__DIR__.'/файл.txt', true);\n\n// если передан дескриптор файла, загрузка с перезаписью\n$fp = fopen(__DIR__.'/файл.txt', 'rb');\n$resource-\u003eupload($fp, true);\n```\n\nЗагрузка файлов, расположенных на удалённом сервере. Возвращает объект операции `Arhitector\\Yandex\\Disk\\Operation`.\n\n```php\n$operation = $resource-\u003eupload('http://домен.ру/файл.zip');\n\n// запретить пере адресацию.\n$operation = $resource-\u003eupload('https://домен.ру/файл.zip', null, true);\n```\n\n### 1.3.8.14. Методы фильтрации\n\nОбъект `Arhitector\\Yandex\\Disk\\Resource\\Closed` поддерживает:\n\n- setLimit\n- setOffset\n- setPreviewCrop\n- setPreview\n- setSort\n\n## 1.3.9. Работа с публичными ресурсами.\n\n\nРабота с ресурсами с открытым доступом осуществляется через методы `Disk::getPublishResource` и `Disk::getPublishResources`, доступ к которым имеет владелец диска.\n\n#### Метод Disk::getPublishResource\n\nПолучает объектно ориентированное представление конкретного ресурса на Яндекс.Диске с открытым доступом. \n\n```php\npublic Resource\\Closed Disk::getPublishResource(string $public_key [, int $limit = 20 [, int $offset = 0]])\n```\n\n`$public_key` - публичный ключ или URL-адрес ресурса с открытым доступом.\n\n`$limit` - Количество ресурсов в ответе, если это папка.\n\n`$offset` - Смещение. Задаётся для списка всех файлов или если ресурс является папка, то задаёт смещение вложенных в папку ресурсов.\n\n**Примеры**\n\nПолучить объект ресурса.\n\n```php\n/**\n * @var Arhitector\\Yandex\\Disk\\Resource\\Opened  $publicResource\n */\n$publicResource = $disk-\u003egetResource('https://yadi.sk/d/g0N4hNtXcrq22');\n\n$publicResource = $disk-\u003egetResource('wICbu9SPnY3uT4tFA6P99YXJwuAr2TU7oGYu1fTq68Y=', 10, 0);\n```\n\nУстановить `$limit` и `offset` можно и после получения объекта ресурса методами `setLimit` и `setOffset`.\n\n```php\n\n$publicResource-\u003esetLimit(100);\n\n$publicResource-\u003esetOffset(200);\n```\n\n#### Метод Disk::getPublishResources, список всех опубликованных файлов.\n\nПолучает список всех файлов на Яндекс.Диске с открытым доступом и т.д. Список представлен объектом `Arhitector\\Yandex\\Disk\\Resource\\Collection`.\n\n```php\npublic Resource\\Collection Disk::getPublishResources([, int $limit = 20 [, int $offset = 0]])\n```\n\nЗдесь доступны методы фильтрации, основные методы получения информации и ряд других.\n\n**Примеры**\n\n```php\n/**\n * Получить список всех файлов\n *\n * @var Disk\\Resource\\Collection  $collection\n */\n$collection = $disk-\u003egetPublishResources();\n\n$disk-\u003egetPublishResources(100, 15);\n```\n\n##### Методы фильтрации\n\nВсе это дело происходит на стороне API. Для коллекции доступны методы\n\n- setLimit\n- setMediaType\n- setOffset\n- setPreviewCrop\n- setPreview\n- setSort\n\n### 1.3.9.1. Получить публичный ключ\n\nПолучает публичный ключ или URL, который был использован для получения доступа к ресурсу.\n\n```php\npublic string Opened::getPublicKey( void )\n```\n\n**Примеры**\n\n```php\n$publicResource-\u003egetPublicKey();\n```\n\n### 1.3.9.2. Получает прямую ссылку\n\nПолучить прямую ссылку на скачивание файла или папки.\n\n\u003e Примечание: возвращаемая ссылка действует (\"живет\") пару часов.\n\n\u003e Примечание: метод не поддерживает получение ссылок на ресурсы внутри публичной папки. Эта возможность реализуема, но не реализована.\n\n```php\npublic string Opened::getLink( void )\n```\n\n**Примеры**\n\n```php\n$publicResource-\u003egetLink();\n```\n\n### 1.3.9.3. Скачивание публичного файла или папки.\n\nСкачивание публичного файла или папки (в виде zip-архива).\n\n```php\npublic bool Opened::download(mixed $destination [, bool $overwrite = false [, bool $check_hash = false]])\n```\n\n`$destination` - Путь, по которому будет сохранён файл\n\nПринимает значения:\n\n- `string` - файловый путь.\n- `resource` - открытый на запись дескриптор файла.\n- `StreamInterface` - поток, открытый на запись.\n\n`$overwrite` - флаг перезаписи, если `$destination` является файловым путем. `FALSE` - поведение по умолчанию.\n\n`$check_hash` - провести проверку целостности скачанного файла. Значение `TRUE` позволяет проверить `md5` хеш скачанного файла. По умолчанию `FALSE`.\n\n**Примеры**\n\n```php\n$publicResource-\u003edownload(__DIR__.'/file.txt');\n\n$publicResource-\u003edownload(__DIR__.'/file.txt', true);\n\n$publicResource-\u003edownload(__DIR__.'/file.txt', true, true);\n```\n\nЗапись в открытый дескриптор.\n\n```php\n// открыть любой дескриптор\n$fp = fopen(__DIR__.'/файл.txt', 'wb+');\n\n// или и т.д.\n$fp = fopen('php://memory', 'r+b');\n\n// true - провести проверку целостности скачанного файла\n$publicResource-\u003edownload($fp, false, true);\n\n// продолжить работу ...\nfseek($fp, 0);\n```\n\nИспользовать обертку над потоком так же просто.\n\n```php\n$stream = new Stream('php://temp', 'r+');\n\n$publicResource-\u003edownload($stream);\n\nvar_dump($stream-\u003egetSize());\n```\n\n### 1.3.9.4. Есть ли доступ к этому файлу от имени владельца.\n\n/**\n\t * Этот файл или такой же находится на моём диске\n\t * Метод требует Access Token\n\t *\n\t * @return    boolean\n\t */\n\t \n\t public function hasEqual()\n\t \n### 1.3.9.5. Сохранение публичного файла в «Загрузки».\n\n\t/**\n\t * Сохранение публичного файла в «Загрузки» или отдельный файл из публичной папки\n\t *\n\t * @param    string $name Имя, под которым файл следует сохранить в папку «Загрузки»\n\t * @param    string $path Путь внутри публичной папки.\n\t *\n\t * @return    mixed\n\t */\n\t public function save($name = null, $path = null)\n\t \n### 1.3.9.6. Установить путь внутри публичной папки.\n\n\t/**\n\t * Устанавливает путь внутри публичной папки\n\t *\n\t * @param string $path\n\t *\n\t * @return $this\n\t */\n\t public function setPath($path)\n\n\n\n\n\n## 1.3.10. Работа с файлами в корзине.\n\n\t/**\n\t * Ресурсы в корзине.\n\t *\n\t * @param    string $path путь к файлу в корзине\n\t * @param int       $limit\n\t * @param int       $offset\n\t *\n\t * @return \\Arhitector\\Yandex\\Disk\\Resource\\Removed\n\t * @example\n\t *\n\t * $disk-\u003egetTrashResource('file.ext') -\u003e toArray() // файл в корзине\n\t * $disk-\u003egetTrashResource('trash:/file.ext') -\u003e delete()\n\t */\n\tpublic function getTrashResource($path, $limit = 20, $offset = 0)\n\t\n\t/**\n\t * Содержимое всей корзины.\n\t *\n\t * @param int $limit\n\t * @param int $offset\n\t *\n\t * @return \\Arhitector\\Yandex\\Disk\\Resource\\Collection\n\t */\n\tpublic function getTrashResources($limit = 20, $offset = 0)\n\t\n### 1.3.10.1. Восстановить ресурс из корзины.\n\n\t/**\n\t *\tВосстановление файла или папки из Корзины\n\t *\tВ корзине файлы с одинаковыми именами в действительности именют постфикс к имени в виде unixtime\n\t *\n\t *\t@param\tmixed\t$name\tоставляет имя как есть и если boolean это заменяет overwrite\n\t *\t@param\tboolean\t$overwrite\n\t *\t@return\tmixed\n\t */\n\tpublic function restore($name = null, $overwrite = false)\n\n### 1.3.10.2. Удалить ресурс из корзины.\n\n\t/**\n\t * Удаление файла или папки\n\t *\n\t * @return    mixed\n\t */\n\tpublic function delete()\n\n\n## 1.3.11. Очистка корзины.\n\n\t/**\n\t * Очистить корзину.\n\t *\n\t * @return bool|\\Arhitector\\Yandex\\Disk\\Operation\n\t */\n\tpublic function cleanTrash()\n\n## 1.3.12. Последние загруженные файлы.\n\t/**\n\t * Последние загруженные файлы\n\t *\n\t * @param    integer $limit\n\t * @param    integer $offset\n\t *\n\t * @return   \\Arhitector\\Yandex\\Disk\\Resource\\Collection\n\t *\n\t * @example\n\t *\n\t * $disk-\u003euploaded(limit, offset) // коллекия закрытых ресурсов\n\t */\n\tpublic function uploaded($limit = 20, $offset = 0)\n\t\n## 1.3.13. Синхронные операции.\n\n\t/**\n\t * Получить статус операции.\n\t *\n\t * @param   string $identifier идентификатор операции или NULL\n\t *\n\t * @return  \\Arhitector\\Yandex\\Disk\\Operation\n\t *\n\t * @example\n\t *\n\t * $disk-\u003egetOperation('identifier operation')\n\t */\n\tpublic function getOperation($identifier)\n\n\t/**\n\t * Возвращает количество асинхронных операций экземпляра.\n\t *\n\t * @return int\n\t */\n\tpublic function count()\n\t\n\t\t/**\n\t * Получить все операции, полученные во время выполнения сценария\n\t *\n\t * @return array\n\t *\n\t * @example\n\t *\n\t * $disk-\u003egetOperations()\n\t *\n\t * array (size=124)\n\t *  0 =\u003e 'identifier_1',\n\t *  1 =\u003e 'identifier_2',\n\t *  2 =\u003e 'identifier_3',\n\t */\n\tpublic function getOperations()\n\t\n## 1.3.14. Методы фильтрации.\n\n\t/**\n\t * Количество ресурсов, вложенных в папку, описание которых следует вернуть в ответе\n\t *\n\t * @param    integer $limit\n\t * @param    integer $offset установить смещение\n\t *\n\t * @return   $this\n\t */\n\tpublic function setLimit($limit, $offset = null)\n\n\n\t/**\n\t * Количество вложенных ресурсов с начала списка, которые следует опустить в ответе\n\t *\n\t * @param    integer $offset\n\t *\n\t * @return    $this\n\t */\n\tpublic function setOffset($offset)\n\t\n\t\t/**\n\t * Атрибут, по которому сортируется список ресурсов, вложенных в папку.\n\t *\n\t * @param    string  $sort\n\t * @param    boolean $inverse TRUE чтобы сортировать в обратном порядке\n\t *\n\t * @return    $this\n\t * @throws    \\UnexpectedValueException\n\t */\n\tpublic function setSort($sort, $inverse = false)\n\t\n\t'Допустимые значения сортировки - name, path, created, modified, size'\n\t\n\t\t/**\n\t * Тип файлов, которые нужно включить в список\n\t *\n\t * @param    string $media_type\n\t *\n\t * @return    $this\n\t * @throws    \\UnexpectedValueException\n\t */\n\tpublic function setMediaType($media_type)\n\tТип файлов, которые нужно включить в список. Диск определяет тип каждого файла при загрузке.\nЧтобы запросить несколько типов файлов, можно перечислить их в значении параметра через запятую. Например, media_type=\"audio,video\".\nПоддерживаемые типы:\naudio — аудио-файлы.\nbackup — файлы резервных и временных копий.\nbook — электронные книги.\ncompressed — сжатые и архивированные файлы.\ndata — файлы с базами данных.\ndevelopment — файлы с кодом (C++, Java, XML и т. п.), а также служебные файлы IDE.\ndiskimage — образы носителей информации в различных форматах и сопутствующие файлы (например, CUE).\ndocument — документы офисных форматов (Word, OpenOffice и т. п.).\nencoded — зашифрованные файлы.\nexecutable — исполняемые файлы.\nflash — файлы с флэш-видео или анимацией.\nfont — файлы шрифтов.\nimage — изображения.\nsettings — файлы настроек для различных программ.\nspreadsheet — файлы офисных таблиц (Numbers, Lotus).\ntext — текстовые файлы.\nunknown — неизвестный тип.\nvideo — видео-файлы.\nweb — различные файлы, используемые браузерами и сайтами (CSS, сертификаты, файлы закладок).\n\n\t\t/**\n\t * Получает установленное значение.\n\t *\n\t * @return  string\n\t */\n\tpublic function getMediaType()\n\t\n\t\t/**\n\t * Все возможные типы файлов\n\t *\n\t * @return array\n\t */\n\tpublic function getMediaTypes()\n\t\n\t\t/**\n\t * Обрезать превью согласно размеру\n\t *\n\t * @param    boolean $crop\n\t *\n\t * @return    $this\n\t */\n\tpublic function setPreviewCrop($crop)\n\tПараметр позволяет обрезать превью согласно размеру, заданному в значении параметра preview_size.\nДопустимые значения:\n «false» — параметр игнорируется. Это значение используется по умолчанию.\n «true» — превью обрезается следующим образом:\nЕсли передана только ширина или высота, картинка уменьшается до этого размера с сохранением пропорций. Затем из центра уменьшенного изображения также вырезается квадрат с заданной стороной.\nЕсли передан точный размер (например, «120x240»), из центра оригинального изображения вырезается фрагмент максимального размера в заданных пропорциях ширины и высоты. Затем вырезанный фрагмент масштабируется до указанных размеров.\n\n\t\t/**\n\t * Размер уменьшенного превью файла\n\t *\n\t * @param    mixed $preview S, M, L, XL, XXL, XXXL, \u003cширина\u003e, \u003cширина\u003ex, x\u003cвысота\u003e, \u003cширина\u003ex\u003cвысота\u003e\n\t *\n\t * @return    $this\n\t * @throws    \\UnexpectedValueException\n\t */\n\tpublic function setPreview($preview)\n\tВы можете задать как точный размер превью, так и размер одной из сторон. Получившееся изображение можно обрезать до квадрата с помощью параметра preview_crop.\nВарианты значений:\n Предопределенный размер большей стороны.\nКартинка уменьшается до указанного размера по большей стороне, пропорции исходного изображения сохраняются. Например, для размера «S» и картинки размером 120×200 будет сгененерировано превью размером 90×150, а для картинки 300×100 — превью размером 150×50.\nПоддерживаемые значения:\n«S» — 150 пикселей;\n«M» — 300 пикселей;\n«L» — 500 пикселей;\n«XL» — 800 пикселей;\n«XXL» — 1024 пикселей;\n«XXXL» — 1280 пикселей.\n Точная ширина (например, «120» или «120x») или точная высота (например, «x145»).\nКартинка уменьшается до указанной ширины или высоты, пропорции исходного изображения сохраняются.\nЕсли передан параметр preview_crop, из центра уменьшенного изображения также вырезается квадрат с заданной стороной.\n Точный размер (в формате \u003cширина\u003ex\u003cвысота\u003e, например «120x240»).\nКартинка уменьшается до меньшего из указанных размеров, пропорции исходного изображения сохраняются.\nЕсли передан параметр preview_crop, из центра оригинального изображения вырезается фрагмент максимального размера в заданных пропорциях ширины и высоты (в примере — 1/2). Затем вырезанный фрагмент масштабируется до указанных размеров.\n\n\n\t\t/**\n\t * Получает установленное значение \"setPreview\".\n\t *\n\t * @return  string\n\t */\n\tpublic function getPreview()\n\t\n\t\t/**\n\t * Получает установленное значение \"setPreviewCrop\".\n\t *\n\t * @return  string\n\t */\n\tpublic function getPreviewCrop()\n\t\n\t\t/**\n\t * Относительный путь к ресурсу внутри публичной папки.\n\t *\n\t * @param    string $path\n\t *\n\t * @return    $this\n\t */\n\tpublic function setRelativePath($path)\n\t\n\t\t/**\n\t * Получает установленное значение.\n\t *\n\t * @return  string\n\t */\n\tpublic function getRelativePath()\n\t\n\t\t/**\n\t * Тип ресурса\n\t *\n\t * @param    string $type\n\t *\n\t * @return    $this\n\t * @throws    \\UnexpectedValueException\n\t */\n\tpublic function setType($type)\n\t\n\t\n\t\t/**\n\t * Получает установленное значение.\n\t *\n\t * @return  string\n\t */\n\tpublic function getType()\n\t\n\t\n## 1.3.15 События.\n\nРесурсы поддерживают свои события. Чтобы получить больше информации читайте описание событий клиента (описано ниже). Список доступных событий:\n\n- **disk.downloaded** - событие наступает всякий раз когда именно этот ресурс был скачан.\n- **disk.uploaded** - событие наступает когда ресурс загружен.\n- **disk.operation** - наступает когда Яндекс.Диск выполняет асинхронную операцию с ресурсом (например, перемещение большой папки).\n- **disk.delete** - наступает тогда, когда именно этот ресурс удаляется, может отменить удаление.\n\nОтличие от событий делигируемых клиентом заключается в видимости этих событий. Клиент устанавливает события для всех ресурсов, не смотря на это каждый ресурс может принимать свои собственные события.\n\nСобытие может принимать несколько обработчиков. Обработчики событий не заменяют друг друга, а добавляются в очередь.\n\n**Примеры**\n\n```php\n$resource-\u003eaddListeners();\n\n```\n\n## 1.3.16 Событие `uploaded`\n\nВызывается после выполнения запроса на загрузку локального файла.\n\n```php\nuse Arhitector\\Yandex\\Disk;\nuse Arhitector\\Yandex\\Disk\\Resource\\Closed;\nuse League\\Event\\Event;\nuse Psr\\Http\\Message\\ResponseInterface;\nuse Psr\\Http\\Message\\StreamInterface;\n\n// ... \n$disk-\u003eaddListener('uploaded', function (Event $event, Closed $resource, Disk $disk, StreamInterface $uploadedStream, ResponseInterface $response) {\n\t// $event - событие\n\t// $resource - тоже самое что и $resource\n\t// $disk - клиент\n\t// $uploadedStream - в данном примере файл file_path.pdf обернутый в Stream\n\t// $response - Ответ от Я.Диска. $response-\u003egetBody() - не содержит ничего (см. документацию API Я.Диска)\n});\n\n// ...\n$resource-\u003eupload(__DIR__.'/file_path.pdf');\n\n```\n\n\n\n\n\n\n\n## Стандарты кодирования\n\nЭти стандарты должны соблюдаться при внесении изменений в код. В основе стандарта используется PSR-2 с некоторыми изменениями.\n\n### Управляющие структуры\n\nКлючевые слова, такие как **if**, **for**, **foreach**, **while**, **switch** должны сопровождаться пробелом перед списком параметров/аргументов. Фигурные скобки должны располагаться на новой линии и разрыв должен соблюдать ту же вложенность.\n\n```php\nif ($arg === true)\n{\n    // некоторый код\n}\nelseif ($arg === null)\n{\n    // некоторый код\n}\nelse\n{\n    // некоторый код\n}\n\nforeach ($array as $key =\u003e $value)\n{\n    // некоторый код\n}\n\nfor ($i = 0; $i \u003c $max; $i++)\n{\n    // некоторый код\n}\n\nwhile ($i \u003c $max)\n{\n    // некоторый код\n}\n\ndo\n{\n    // некоторый код\n}\nwhile ($i \u003c $max)\n\nswitch ($var)\n{\n    case 'value1':\n        // некоторый код\n    break;\n\n    default :\n        // некоторый код\n    break;\n}\n```\n\n### Сравнения и логические операторы\n\nОператор **!** должен быть окружён пробелами с обеих сторон.\n\n```php\nif ($var == false and $other_var != 'some_value')\nif ($var === false or my_function() !== false)\nif ( ! $var)\n```\n\n\n\n\n\n\n\n## 1. Базовый клиент для общения с сервисами Яндекса\n\nБазовый клиент предоставляет функциональность для прохождения аунтификации на сервисах Яндекса, использующих протокол OAuth. Наследуется другими клиентами для определённых сервисов (например, *Mackey\\Yandex\\Disk* также наследует методы базового клиента).\n\n```php\npublic void Client::__construct([string $token = null])\n```\n\n**$token** - необязательный параметр, OAuth-токен приложения.\n\n**Примеры**\n\n```php\n$client = new Client();\n\n$client = new Client('0c4181a7c2cf4521964a72ff57a34a07');\n```\n\n### 1.1. Формат обмена данными\n\nПолучает информацию о формате, в котором происходит общение с сервисами.\n\n```php\npublic string Client::getContentType( void )\n```\n\n**Примеры**\n\n```php\n$client-\u003egetContentType(); // application/json\n```\n\n### 1.2. Установить ID приложения\n\nУстанавливает ID зарегистрированного приложения.\n\n```php\npublic this Client::setClientOauth(string $client_id)\n```\n\n**$client_id** - строка, ID приложения\n\n**Примеры**\n\n```\n$client-\u003esetClientOauth('123456789');\n```\n\n### 1.3. Получить ID приложения\n\nВозвращает ID приложения, если таковой был ранее установлен с помощью метода *setClientOauth*.\n\n```php\npublic mixed Client::getClientOauth( void )\n```\n\n**Пример**\n\n```php\n$client-\u003egetClientOauth(); // null\n\n$client-\u003egetClientOauth(); // string '123456789'\n```\n\n### 1.4. Установить пароль приложения\n\nУстанавливает пароль приложения. Пароль приложения выдается при регистрации этого приложения.\n\n```php\npublic this Client::setClientOauthSecret(string $client_secret)\n```\n\n**Примеры**\n\n```php\n$client-\u003esetClientOauthSecret('--------');\n```\n\n### 1.5. Получить пароль приложения\n\nВозвращает ранее установленный пароль приложения или NULL.\n\n```php\npublic mixed Client::getClientOauthSecret( void )\n```\n\n**Примеры**\n\n```php\n$client-\u003egetClientOauthSecret(); // null\n\n$client-\u003egetClientOauthSecret(); // string '--------'\n```\n\n### 1.6. Установить OAuth-токен\n\nУстанавливает OAuth-токен для прохождения аунтификация на сервисах. Не ве сервисы требуют OAuth-токен.\n\n```php\npublic this Client::setAccessToken(string $token)\n```\n\n**Примеры**\n\n```php\n$client-\u003esetAccessToken('0c4181a7c2cf4521964a72ff57a34a07');\n```\n\n### 1.7. Получить установленный OAuth-токен\n\nПолучает ранее установленный OAuth-токен или NULL.\n\n```php\npublic mixed Client::getAccessToken( void );\n```\n\n**Примеры**\n\n```php\n$client-\u003egetAccessToken(); // null\n\n$client-\u003egetAccessToken(); // string '0c4181a7c2cf4521964a72ff57a34a07'\n```\n\n### 1.8. Запросить новый или обновить уже выданный OAuth-токен\n\nПозволяет получить OAuth-токен или обновить уже выданный ранее токен для приложения.\n\n```php\npublic mixed refreshAccessToken(string $username, string $password [, bool $onlyToken = false])\n```\n\nВ случае успеха возвращает объект с информацией или только OAuth-токен если передан параметр $onlyToken = true.\n\n**$username** - имя пользователя аккаунта, на котором зарегистрировано приложение\n\n**$password** - пароль от аккаунта\n\n**$onlyToken** - вернуть только строковый токен\n\n**Примеры**\n\n```php\n$client-\u003erefreshAccessToken('username', 'password');\n\n/* object(stdClass)[28]\n  public 'token_type' =\u003e string 'bearer' (length=6)\n\tpublic 'access_token' =\u003e string 'c7621`6149032dwf9a6a7ca765eb39b8' (length=32)\n\tpublic 'expires_in' =\u003e int 31536000\n\tpublic 'uid' =\u003e int 241`68329\n\tpublic 'created_at' =\u003e int 1456882032 */\n\n$client-\u003erefreshAccessToken('username', 'password', true);\n\n/* string 'c7621`6b09032dwf9a6a7ca765eb39b8' (length=32) */\n```\n\n### 1.9. Установить обработчик события\n\nSDK поддерживает события. Каждый сервис имеет свой набор возможных событий.  Перейдите на \u003chttp://event.thephpleague.com/2.0/\u003e для получения более полной информации.\n\n```php\npublic this Client::addListener(string $event, mixed $listener [, int $priority = ListenerAcceptorInterface::P_NORMAL])\n```\n\n**$event** - событие\n\n**$listener** - обработчик ListenerInterface или callable\n\n**$priority** - приоритет. **League\\Event\\EmitterInterface** предопределяет 3 приоритета:\n- EmitterInterface::P_HIGH: 100\n- EmitterInterface::P_NORMAL: 0\n- EmitterInterface::P_LOW: -100\n\n\n**Примеры**\n\n```php\n$client-\u003eaddListener('disk.downloaded', function (Event $event, $resource) {\n  // скачивание файла завершено\n});\n```\n\n### 1.10. Удалить обработчик для события\n\nУдаляет ранее установленный обработчик.\n\n```php\npublic this Client::removeListener(string $event, mixed $listener)\n```\n\n**$event** - событие\n\n**$listener** - обработчик ListenerInterface или callable\n\n**Примеры**\n\n```php\n$client-\u003eremoveListener('disk.downloaded', function (Event $event, $resource) {\n\n});\n```\n\n### 1.11. Установить одноразовый обработчик\n\nУстанавливает обработчик.\n\n```php\npublic this addOneTimeListener(string $event, mixed $listener [, int $priority = ListenerAcceptorInterface::P_NORMAL])\n```\n\n**$event** - событие\n\n**$listener** - обработчик ListenerInterface или callable\n\n**$priority** - приоритет. **League\\Event\\EmitterInterface** предопределяет 3 приоритета:\n- EmitterInterface::P_HIGH: 100\n- EmitterInterface::P_NORMAL: 0\n- EmitterInterface::P_LOW: -100\n\n**Примеры**\n\n```php\n$client-\u003eaddOneTimeListener('disk.downloaded', function (Event $event, $resource) {\n  // скачивание файла завершено\n});\n```\n\n### 1.12. Удалить все обработчики события\n\nУдалить все ранее утсановленные обработчики.\n\n```php\npublic this removeAllListeners(string $event)\n```\n**$event** - событие\n\n**Примеры**\n\n```php\n$client-\u003eremoveAllListeners('disk.downloaded');\n```\n\n### 1.13. Обработчик события на основе класса\n\nДобавляет слушатель на основе класса.\n\n```php\npublic this useListenerProvider(ListenerProviderInterface $provider)\n```\n\n**$provider** - объект класса\n\n**Примеры**\n\n```php\n$client-\u003euseListenerProvider(new MyProvider);\n```\n\n### 1.14. Запустить событие\n\nВыполняет вызов слушателей события.\n\n```php\npublic mixed emit(string $event)\n```\n\n**$event** - событие\n\n**Примеры**\n\n```php\n$client-\u003eemit('custom.event', 'custom parameter', 'etc.');\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjack-theripper%2Fyandex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjack-theripper%2Fyandex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjack-theripper%2Fyandex/lists"}