native-thumber
Version:
create thumber and store to Amazon S3
58 lines (49 loc) • 1.76 kB
text/coffeescript
_ = require 'lodash/object'
fse = require 'fs-extra'
{StoreS3, StoreLocale} = require './store'
Processor = require './processor'
module.exports = class Thumber
constructor: (config) ->
defaultConf =
directory: 'upload/'
quality: 70
ifOriginal: true
= _.assign {}, defaultConf, config
= .schemas or [{version: 'thumb', size: '50x50'}]
if .store == 's3'
= new StoreS3
else if .store == 'locale'
= new StoreLocale
else
console.warn "Upload not working: You need a config.store"
process: (path, filename, size, done) ->
fse.readFile path, (err, data) =>
# console.log err, data
return done(err) if err
base64data = new Buffer data, 'binary'
file =
'filename': filename
'Body': base64data
'byteCount': size
# write
data, filename
if .ifOriginal then else done()
thumber: (data, filename) ->
.forEach (sc) =>
sc =
processor = new Processor sc
sc.Body = processor.process data
sc
fullname: (filename, version) ->
extension = filename.split(".")
.extension = extension[extension.length - 1]
.format = .extension.toUpperCase()
ext = ".#{@config.extension}"
fname = if version then filename.replace(ext,'-'+version+ext) else filename
.directory + fname
prepare: (sc, filename) ->
scConf = _.assign {}, , sc, {filename: }
delete scConf.schemas if scConf.schemas?
scConf
write: (__newFile, done)->
.process(__newFile, done) if