package useCases import ( "RenewCMS/internal/domain/image" "context" ) func (u *ServeVariantUseCase) Generate(ctx context.Context, variant image.Variant, storedName string) (image.VariantFile, error) { source, err := u.storage.Open(storedName) if err != nil { return image.VariantFile{}, err } defer source.Content.Close() if servedAsIs(storedName, source.Content) { return image.VariantFile{}, image.ErrVariantSourceUnsupported } if source.Size > u.maxSourceBytes { return image.VariantFile{}, image.ErrSourceTooLarge } settings := variant.Settings() fingerprint := settings.Fingerprint() served, existing, hit, err := u.lookupCached(variant.Name, storedName, fingerprint, image.VariantETag(settings, storedName)) if err != nil { return image.VariantFile{}, err } if hit { _ = served.Content.Close() return existing, nil } return u.generated(ctx, variant, storedName, fingerprint, existing) }