Интерфейс Session

Session и AsyncSession - абстрактные классы, которые работают в качестве адаптеров для нижележащих HTTP библиотек. Экземпляр сессии используется в Client или AsyncSession для выполнения всех HTTP запросов к API Яндекс.Диска.

Эти интерфейсы могут быть реализованы, чтобы добавить поддержку любой HTTP библиотеки. Для конкретного примера см. исходный код любой из существующих реализаций (например, HTTPXSession).

Синхронный

class yadisk.Session[исходный код]

Класс HTTP сессии. Поддерживает открытые соединения, хранит заданные заголовки и некоторые другие параметры запросов.

Должен быть явным образом закрыт (может быть сделано с помощью конструкции with).

close() None[исходный код]

Закрывает сессию.

Примечание

Это абстрактный метод, который необходимо реализовать.

send_request(method: Literal['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS', 'HEAD', 'CONNECT', 'TRACE'], url: str, *, params: dict[str, Any] | None = None, data: bytes | Iterator[bytes] | BinaryIO | None = None, timeout: float | tuple[float | None, float | None] | None = Ellipsis, headers: Mapping[str, str] | None = None, stream: bool = False, **kwargs) Response[исходный код]

Отправляет HTTP запрос с указанными параметрами. В случае ошибки, метод должен вызвать одно из исключений, основанных на YaDiskError. Могут быть указаны дополнительные keyword-аргументы, они могут быть напрямую переданы в нижележащий HTTP клиент без изменений.

Примечание

Это абстрактный метод, который необходимо реализовать.

Параметры:
  • methodstr, HTTP метод

  • urlstr, URL

  • paramsdict, GET параметры

  • databytes, итератор или файл-подобный объект, данные, которые будут отправлены в теле запроса

  • headersdict, дополнительные заголовки

  • timeout – таймаут запроса, tuple вида (read timeout, connect timeout), float или None (без таймаута)

  • streambool, если False, содержимое ответа будет сразу целиком скачано

Результат:

Response, объект ответа

class yadisk.Response[исходный код]

Представляет собой ответ HTTP.

В случае, если возникает ошибка, методы данного классы должны вызвать одно из исключений, основанных на YaDiskError.

Переменные:

statusint, HTTP код статуса

close() None[исходный код]

Закрывает ответ и освобождает лежащее в основе соединение в пул

Примечание

Это абстрактный метод, который необходимо реализовать.

download(consume_callback: Callable[[bytes], None]) None[исходный код]

Скачивает содержимое ответа.

Примечание

Это абстрактный метод, который необходимо реализовать.

Параметры:

consume_callback – функция, принимает 1 параметр - фрагмент данных (bytes), потребляет этот фрагмент (например, записывает его в файл)

Исключение:

RequestError – не удалось получить тело ответа

get_exception() YaDiskError[исходный код]

Обёртка над yadisk.utils.get_exception для удобства.

Результат:

YaDiskError

json() dict | list | str | int | float | None[исходный код]

Возвращает JSON, содержащийся в ответе (парсит JSON).

Примечание

Это абстрактный метод, который необходимо реализовать.

Исключение:
  • RequestError – не удалось получить тело ответа

  • ValueError – не удалось обработать JSON

Результат:

dict, list, str, int, float или None

Асинхронный

class yadisk.AsyncSession[исходный код]

Класс HTTP сессии. Поддерживает открытые соединения, хранит заданные заголовки и некоторые другие параметры запросов.

Должен быть явным образом закрыт (может быть сделано с помощью конструкции with).

async close() None[исходный код]

Закрывает сессию.

Примечание

Это абстрактный метод, который необходимо реализовать.

async send_request(method: Literal['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS', 'HEAD', 'CONNECT', 'TRACE'], url: str, *, params: dict[str, Any] | None = None, data: bytes | Iterator[bytes] | AsyncIterator[bytes] | BinaryIO | BinaryAsyncFileLike | None = None, timeout: float | tuple[float | None, float | None] | None = Ellipsis, headers: Mapping[str, str] | None = None, stream: bool = False, **kwargs) AsyncResponse[исходный код]

Отправляет HTTP запрос с указанными параметрами. В случае ошибки, метод должен вызвать одно из исключений, основанных на YaDiskError. Могут быть указаны дополнительные keyword-аргументы, они могут быть напрямую переданы в нижележащий HTTP клиент без изменений.

Примечание

Это абстрактный метод, который необходимо реализовать.

Параметры:
  • methodstr, HTTP метод

  • urlstr, URL

  • paramsdict, GET параметры

  • databytes, итератор (возможно асинхронный) или файл-подобный объект (возможно асинхронный), данные, которые будут отправлены в теле запроса

  • headersdict, дополнительные заголовки

  • timeout – таймаут запроса, tuple вида (read timeout, connect timeout), float или None (без таймаута)

  • streambool, если False, содержимое ответа будет сразу целиком скачано

Результат:

Response, объект ответа

class yadisk.AsyncResponse[исходный код]

Представляет собой ответ HTTP.

В случае, если возникает ошибка, методы данного классы должны вызвать одно из исключений, основанных на YaDiskError.

Переменные:

statusint, HTTP код статуса

async close() None[исходный код]

Закрывает запрос и освобождает лежащее в основе соединение в пул.

Примечание

Это абстрактный метод, который необходимо реализовать.

async download(consume_callback: Callable[[bytes], None] | Callable[[bytes], Awaitable[None]]) None[исходный код]

Скачивает содержимое ответа.

Примечание

Это абстрактный метод, который необходимо реализовать.

Параметры:

consume_callback – обычная или асинхронная функция, принимает 1 параметр - фрагмент данных (bytes), потребляет этот фрагмент данных (например, записывает его в файл)

Исключение:

RequestError – не удалось получить тело ответа

async get_exception() YaDiskError[исходный код]

Обёртка над yadisk.utils.get_exception для удобства.

Результат:

YaDiskError

async json() dict | list | str | int | float | None[исходный код]

Возвращает JSON, содержащийся в ответе (парсит JSON).

Примечание

Это абстрактный метод, который необходимо реализовать.

Исключение:
  • RequestError – не удалось получить тело ответа

  • ValueError – не удалось обработать JSON

Результат:

dict, list, str, int, float или None