38 lines
1.0 KiB
TypeScript
38 lines
1.0 KiB
TypeScript
/**
|
|
* 图片上传响应 DTO
|
|
*/
|
|
import {
|
|
ImageUploadResponseSchema,
|
|
type ImageUploadResponseInput,
|
|
type ImageUploadResponseData,
|
|
} from "@/data/schemas/chat/image_upload_response";
|
|
|
|
export class ImageUploadResponse {
|
|
declare readonly success: boolean;
|
|
declare readonly imageId: string;
|
|
declare readonly thumbUrl: string;
|
|
declare readonly mediumUrl: string;
|
|
declare readonly originalUrl: string;
|
|
declare readonly width: number;
|
|
declare readonly height: number;
|
|
declare readonly bytes: number;
|
|
|
|
private constructor(input: ImageUploadResponseInput) {
|
|
const data = ImageUploadResponseSchema.parse(input);
|
|
Object.assign(this, data);
|
|
Object.freeze(this);
|
|
}
|
|
|
|
static from(input: ImageUploadResponseInput): ImageUploadResponse {
|
|
return new ImageUploadResponse(input);
|
|
}
|
|
|
|
static fromJson(json: unknown): ImageUploadResponse {
|
|
return ImageUploadResponse.from(json as ImageUploadResponseInput);
|
|
}
|
|
|
|
toJson(): ImageUploadResponseData {
|
|
return ImageUploadResponseSchema.parse(this);
|
|
}
|
|
}
|