add RenderFileAs() for user-supplied mime-type

This commit is contained in:
mappu 2018-06-09 18:07:54 +12:00
parent a91911f351
commit 6cfd09fce0
3 changed files with 16 additions and 0 deletions

View File

@ -1,6 +1,9 @@
package thumbnail
import (
"mime"
"path/filepath"
lru "github.com/hashicorp/golang-lru"
)
@ -9,6 +12,8 @@ type CachingThumbnailer struct {
cache *lru.Cache // threadsafe, might be nil
}
var _ Thumbnailer = &CachingThumbnailer{} // interface assertion
func NewCachingThumbnailer(cacheSize int, opts *Config) (Thumbnailer, error) {
upstream := NewThumbnailerEx(opts)
@ -29,7 +34,11 @@ func NewCachingThumbnailer(cacheSize int, opts *Config) (Thumbnailer, error) {
}
func (this *CachingThumbnailer) RenderFile(absPath string) ([]byte, error) {
mimeType := mime.TypeByExtension(filepath.Ext(absPath))
return this.RenderFileAs(absPath, mimeType)
}
func (this *CachingThumbnailer) RenderFileAs(absPath, mimeType string) ([]byte, error) {
thumb, ok := this.cache.Get(absPath)
if ok {
return thumb.([]byte), nil

View File

@ -11,6 +11,8 @@ type DirectThumbnailer struct {
cfg Config
}
var _ Thumbnailer = &DirectThumbnailer{} // interface assertion
func NewThumbnailer(w, h int) Thumbnailer {
opts := DefaultConfig
opts.Width = w
@ -29,6 +31,10 @@ func NewThumbnailerEx(opts *Config) Thumbnailer {
func (this *DirectThumbnailer) RenderFile(absPath string) ([]byte, error) {
mimeType := mime.TypeByExtension(filepath.Ext(absPath))
return this.RenderFileAs(absPath, mimeType)
}
func (this *DirectThumbnailer) RenderFileAs(absPath, mimeType string) ([]byte, error) {
// Decode source

View File

@ -12,6 +12,7 @@ var (
type Thumbnailer interface {
RenderFile(absPath string) ([]byte, error)
RenderFileAs(absPath, mimeType string) ([]byte, error)
}
func FiletypeSupported(ext string) bool {