2013-10-04 14:56:56 +00:00
|
|
|
package gitmediafilters
|
|
|
|
|
|
|
|
import (
|
|
|
|
".."
|
|
|
|
"crypto/sha1"
|
|
|
|
"encoding/hex"
|
|
|
|
"io"
|
|
|
|
"os"
|
|
|
|
)
|
|
|
|
|
|
|
|
type CleanedAsset struct {
|
2013-10-04 17:19:11 +00:00
|
|
|
Size int64
|
2013-10-04 14:56:56 +00:00
|
|
|
File *os.File
|
|
|
|
Sha string
|
|
|
|
mediafilepath string
|
|
|
|
}
|
|
|
|
|
|
|
|
func Clean(reader io.Reader) (*CleanedAsset, error) {
|
|
|
|
tmp, err := gitmedia.TempFile()
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
sha1Hash := sha1.New()
|
|
|
|
writer := io.MultiWriter(sha1Hash, tmp)
|
2013-10-04 17:19:11 +00:00
|
|
|
written, _ := io.Copy(writer, reader)
|
2013-10-04 14:56:56 +00:00
|
|
|
|
2013-10-04 17:19:11 +00:00
|
|
|
return &CleanedAsset{written, tmp, hex.EncodeToString(sha1Hash.Sum(nil)), ""}, nil
|
2013-10-04 14:56:56 +00:00
|
|
|
}
|
|
|
|
|
2013-10-04 17:19:11 +00:00
|
|
|
func (a *CleanedAsset) Close() error {
|
|
|
|
return os.Remove(a.File.Name())
|
2013-10-04 14:56:56 +00:00
|
|
|
}
|