feat: добавить endpoint picture/srcset
- добавлен contract DTO для picture sources и fallback image - реализована выдача versioned Gateway URLs по static presets - обновлена документация business API и dev smoke flow
This commit is contained in:
@@ -12,6 +12,7 @@ import {
|
||||
} from "@nestjs/swagger"
|
||||
|
||||
import { AssetsService } from "./assets.service"
|
||||
import { AssetPictureResponseDto } from "./asset-picture-response.dto"
|
||||
import { AssetResponseDto, AssetVariantsResponseDto, AssetsListResponseDto } from "./asset-response.dto"
|
||||
import { CreateAssetVersionRequestDto, CreateAssetVersionResponseDto } from "./create-asset-version.dto"
|
||||
import { CreateAssetVariantsRequestDto, CreateAssetVariantsResponseDto } from "./create-asset-variants.dto"
|
||||
@@ -77,6 +78,30 @@ export class AssetsController {
|
||||
return this.assets.createAssetVersion(publicId, request)
|
||||
}
|
||||
|
||||
@Get(":publicId/picture")
|
||||
@ApiOperation({
|
||||
summary: "получить picture/srcset URLs",
|
||||
description:
|
||||
"Возвращает готовый контракт для `<picture>` и `<img>` по static preset: sources, srcset, fallback src, sizes и versioned Gateway URLs. Endpoint не ставит generation jobs: Gateway сгенерирует bytes lazy или отдаст cache.",
|
||||
})
|
||||
@ApiParam({ description: "Публичный идентификатор asset.", example: "asset_demo", name: "publicId" })
|
||||
@ApiQuery({ description: "Static preset для picture contract.", example: "card", name: "preset", required: true })
|
||||
@ApiQuery({ description: "Версия source image. Если не передана, используется currentVersion asset.", example: 1, name: "version", required: false })
|
||||
@ApiQuery({ description: "Quality. Если не передано, берётся default quality preset.", example: 80, name: "quality", required: false })
|
||||
@ApiQuery({ description: "Значение для HTML `sizes`.", example: "(min-width: 768px) 50vw, 100vw", name: "sizes", required: false })
|
||||
@ApiOkResponse({ description: "Picture/srcset contract возвращён.", type: AssetPictureResponseDto })
|
||||
@ApiBadRequestResponse({ description: "Некорректный preset, version, quality или sizes." })
|
||||
@ApiNotFoundResponse({ description: "Asset или version не найдены." })
|
||||
getAssetPicture(
|
||||
@Param("publicId") publicId: string,
|
||||
@Query("preset") preset?: string,
|
||||
@Query("version") version?: string,
|
||||
@Query("quality") quality?: string,
|
||||
@Query("sizes") sizes?: string,
|
||||
): Promise<AssetPictureResponseDto> {
|
||||
return this.assets.getAssetPicture(publicId, { preset, quality, sizes, version })
|
||||
}
|
||||
|
||||
@Get(":publicId/variants")
|
||||
@ApiOperation({
|
||||
summary: "получить variants asset",
|
||||
|
||||
Reference in New Issue
Block a user