summaryrefslogtreecommitdiff
path: root/uploadedfile/thumbfile.go
diff options
context:
space:
mode:
Diffstat (limited to 'uploadedfile/thumbfile.go')
-rw-r--r--uploadedfile/thumbfile.go126
1 files changed, 126 insertions, 0 deletions
diff --git a/uploadedfile/thumbfile.go b/uploadedfile/thumbfile.go
new file mode 100644
index 0000000..ab38f72
--- /dev/null
+++ b/uploadedfile/thumbfile.go
@@ -0,0 +1,126 @@
+package uploadedfile
+
+import (
+ "errors"
+ "fmt"
+ "os"
+
+ "mandible/imageprocessor/gm"
+)
+
+type ThumbFile struct {
+ name string
+ width int
+ height int
+ shape string
+ path string
+}
+
+func NewThumbFile(width, height int, name, shape, path string) *ThumbFile {
+ return &ThumbFile{
+ name,
+ width,
+ height,
+ shape,
+ path,
+ }
+}
+
+func (this *ThumbFile) GetName() string {
+ return this.name
+}
+
+func (this *ThumbFile) SetName(name string) {
+ this.name = name
+}
+
+func (this *ThumbFile) GetHeight() int {
+ return this.height
+}
+
+func (this *ThumbFile) SetHeight(h int) {
+ this.height = h
+}
+
+func (this *ThumbFile) GetWidth() int {
+ return this.width
+}
+
+func (this *ThumbFile) SetWidth(h int) {
+ this.width = h
+}
+
+func (this *ThumbFile) GetShape() string {
+ return this.shape
+}
+
+func (this *ThumbFile) SetShape(shape string) {
+ this.shape = shape
+}
+
+func (this *ThumbFile) GetPath() string {
+ return this.path
+}
+
+func (this *ThumbFile) SetPath(path string) error {
+ if _, err := os.Stat(path); os.IsNotExist(err) {
+ return errors.New(fmt.Sprintf("Error when creating thumbnail %s", this.GetName()))
+ }
+
+ this.path = path
+
+ return nil
+}
+
+func (this *ThumbFile) Process(original *UploadedFile) error {
+ switch this.shape {
+ case "circle":
+ return this.processCircle(original)
+ case "thumb":
+ return this.processThumb(original)
+ case "square":
+ return this.processSquare(original)
+
+ }
+
+ return errors.New("Invalid thumb shape " + this.shape)
+}
+
+func (this *ThumbFile) processSquare(original *UploadedFile) error {
+ filename, err := gm.SquareThumb(original.GetPath(), this.GetName(), this.GetWidth())
+ if err != nil {
+ return err
+ }
+
+ if err := this.SetPath(filename); err != nil {
+ return err
+ }
+
+ return nil
+}
+
+func (this *ThumbFile) processCircle(original *UploadedFile) error {
+ filename, err := gm.CircleThumb(original.GetPath(), this.GetName(), this.GetWidth())
+ if err != nil {
+ return err
+ }
+
+ if err := this.SetPath(filename); err != nil {
+ return err
+ }
+
+ return nil
+}
+
+func (this *ThumbFile) processThumb(original *UploadedFile) error {
+ filename, err := gm.Thumb(original.GetPath(), this.GetName(), this.GetWidth(), this.GetHeight())
+ if err != nil {
+ return err
+ }
+
+ if err := this.SetPath(filename); err != nil {
+ return err
+ }
+
+ return nil
+}