Пакет · sdk-s5w

Опции и перечисления

Значения, которые SDK принимает в параметрах и возвращает в полях сущностей. Перечисления повторяют серверные — те же случаи и те же значения.

Опции Flytachi\Winter\SDK\S5w\OptionПеречисления Flytachi\Winter\SDK\S5w\Enum

ImageOptions

Что сделать с картинкой при загрузке: перекодировать, задать качество, вписать в рамку. Обработка выполняется один раз на сервере, в бакет попадает только результат, оригинал не хранится. Поворот по EXIF применяется, остальные метаданные удаляются.

Неизменяемый объект: каждый метод возвращает новый.

Создание

php
public function __construct(
  ImageFormat $format = ImageFormat::ORIGINAL,
  ?int $quality = null,
  ?int $maxWidth = null,
  ?int $maxHeight = null,
)

public static function original(): ImageOptions
public static function webp(?int $quality = null): ImageOptions
public static function jpeg(?int $quality = null): ImageOptions
public static function png(?int $quality = null): ImageOptions
public static function avif(?int $quality = null): ImageOptions
Параметр Тип Пределы По умолчанию Описание
$format ImageFormat — ORIGINAL во что перекодировать; ORIGINAL — оставить формат
$quality ?int 1–100 серверное: 82; PNG — 60; AVIF — 55 качество кодировщика
$maxWidth ?int 16–10000 без ограничения вписать по ширине
$maxHeight ?int 16–10000 без ограничения вписать по высоте

Пределы проверяет сервер: значение за ними даёт ValidationException с ошибкой по полю, например {"quality": ["must not exceed 100"]}.

ImageOptions::fit()

Вписывает картинку в рамку. Только уменьшает, никогда не увеличивает, пропорции сохраняются: 320×200 в рамке 160×160 станет 160×100.

php
public function fit(?int $maxWidth, ?int $maxHeight = null): ImageOptions

fit(800) ограничивает только ширину; fit(null, 600) — только высоту.

ImageOptions::quality()

Задаёт качество, остальное сохраняет.

php
public function quality(int $quality): ImageOptions

ImageOptions::isEmpty()

true, если опции ничего не просят: формат ORIGINAL, качество и размеры не заданы. Такие опции сервер не применяет вовсе — processed->reason будет no options.

php
public function isEmpty(): bool

Примеры

php
use Flytachi\Winter\SDK\S5w\Option\ImageOptions;

ImageOptions::webp();                     // WebP, качество 82
ImageOptions::webp(80)->fit(1600, 1600);  // WebP 80, вписать в 1600×1600
ImageOptions::avif(50);                   // AVIF 50
ImageOptions::original()->fit(800);       // формат оставить, ширина не больше 800
ImageOptions::jpeg()->quality(90);        // JPEG 90

Только для картинок

Опции, переданные с файлом, который не является картинкой, сервер отклоняет — ValidationException (Image options were given, but this file is not an image).

ImageFormat

Во что перекодировать картинку. Строковое перечисление.

Случай Значение MIME Расширение после загрузки
ORIGINAL 'ORIGINAL' — прежнее
WEBP 'WEBP' image/webp .webp
JPEG 'JPEG' image/jpeg .jpg
PNG 'PNG' image/png .png
AVIF 'AVIF' image/avif .avif

Методы

mime(): ?string — MIME-тип формата; null для ORIGINAL.

Retention

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

Случай Значение Срок
NONE 0 бессрочно
DAY 1 сутки
WEEK 2 неделя
MONTH 3 месяц
QUARTER 4 три месяца
HALF_YEAR 5 полгода
YEAR 6 год

Методы

interval(): ?DateInterval — срок как интервал; null для NONE.

php
$file->createdAt->add($folder->retention->interval());   // когда файл удалится

(Точное время удаления есть и в самом файле — $file->expiresAt.)

CacheVisibility

Кто может кэшировать файл — директива заголовка Cache-Control.

Случай Значение Директива Смысл
SHARED 1 public браузеры и CDN
PRIVATE 2 private только браузер, общие кэши — нет
NO_STORE 3 no-store никто

Методы

directive(): string — директива для Cache-Control.

TokenAccess

Уровень доступа ключа — поле KeyInfo::$access.

Случай Значение Что открывает
BASIC 1 только check() и раздачу /p/{id}
FULL 2 всё: папки, файлы, загрузки

Методы

isFull(): bool — можно ли этим ключом работать с folders(), files() и uploads().

php
if (!$s5w->check()->access->isFull()) {
  throw new RuntimeException('Нужен ключ FULL');
}

FileSort

Поле сортировки в files()->list() и files()->all().

Случай Значение Порядок
CREATED 'created' по дате загрузки (по умолчанию)
NAME 'name' по имени, с учётом регистра (заглавные раньше строчных)
TYPE 'type' по MIME-типу, затем по имени
SIZE 'size' по размеру, затем по имени

SortDirection

Случай Значение
ASC 'asc' — по возрастанию
DESC 'desc' — по убыванию (по умолчанию)