feat: image variants per image
This commit is contained in:
1 parent
f567866161
commit
951fef18ba
92 files changed
+8695
-413
No files matched your search
@@ -0,0 +1,33 @@
|
||||
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)
|
||||
}
|
||||
Reference in new issue
Block a user