arnaucube
arnaucube/goImgServerPublic Self-hosted repository
goImgServer/handlers.go
handlers.goRaw
 1package main
 2
 3import (
 4	"fmt"
 5	"image/jpeg"
 6	"io/ioutil"
 7	"net/http"
 8	"strings"
 9
10	"github.com/gorilla/mux"
11)
12
13func Index(w http.ResponseWriter, r *http.Request) {
14	fmt.Fprintln(w, "Welcome! To send images, go to /image")
15}
16
17func ImageShow(w http.ResponseWriter, r *http.Request) {
18	vars := mux.Vars(r)
19	imageName := vars["imageName"]
20
21	file, err := ioutil.ReadFile(config.Folder + "/" + imageName)
22	if err != nil {
23		fmt.Fprintln(w, err)
24	}
25
26	img, err := dataToImage(file, imageName)
27
28	if err != nil {
29		fmt.Fprintln(w, "la imatge no existeix al server")
30	} else {
31		jpeg.Encode(w, img, nil) // Write to the ResponseWriter
32	}
33}
34
35func NewImage(w http.ResponseWriter, r *http.Request) {
36	err := ipFilter(r)
37	if err != nil {
38		fmt.Fprintln(w, err.Error())
39		return
40	}
41	file, handler, err := r.FormFile("file")
42	if err != nil {
43		fmt.Println(err)
44	}
45	imageName := strings.Split(handler.Filename, ".")[0]
46	fileName := imageName + ".png"
47	data, err := ioutil.ReadAll(file)
48	if err != nil {
49		fmt.Println(err)
50	}
51
52	img, err := dataToImage(data, handler.Filename)
53	if err != nil {
54		fmt.Fprintln(w, "error al processar la imatge")
55	}
56	img = Resize(img)
57	data, err = imageToPNG(img)
58	if err != nil {
59		fmt.Fprintln(w, "error al processar la imatge")
60	}
61	err = ioutil.WriteFile(config.Folder+"/"+fileName, data, 0777)
62	if err != nil {
63		fmt.Println(err)
64	}
65
66	fmt.Fprintln(w, "http://"+config.ServerIP+":"+config.ServerPort+"/images/"+fileName)
67}