arnaucube
arnaucube/goCaptchaPublic Self-hosted repository
goCaptcha/serverRoutes.go
serverRoutes.goRaw
 1package main
 2
 3import (
 4	"encoding/json"
 5	"fmt"
 6	"image/jpeg"
 7	"io/ioutil"
 8	"net/http"
 9	"strings"
10
11	"gopkg.in/mgo.v2/bson"
12
13	"github.com/gorilla/mux"
14)
15
16type Routes []Route
17
18var routes = Routes{
19	Route{
20		"Index",
21		"GET",
22		"/",
23		Index,
24	},
25	Route{
26		"GetImage",
27		"GET",
28		"/image/{imageName}",
29		GetImage,
30	},
31	Route{
32		"GetCaptcha",
33		"GET",
34		"/captcha",
35		GetCaptcha,
36	},
37}
38
39//ROUTES
40
41func Index(w http.ResponseWriter, r *http.Request) {
42	fmt.Fprintln(w, "ask for images in /r")
43}
44
45func GetImage(w http.ResponseWriter, r *http.Request) {
46	vars := mux.Vars(r)
47	imageName := vars["imageName"]
48
49	imgFakePath := ImgFakePath{}
50	err := imgFakePathCollection.Find(bson.M{"fake": imageName}).One(&imgFakePath)
51	check(err)
52
53	fmt.Println(serverConfig.ImgsFolder + "/" + imgFakePath.Real)
54
55	file, err := ioutil.ReadFile(serverConfig.ImgsFolder + "/" + imgFakePath.Real)
56	if err != nil {
57		fmt.Fprintln(w, err)
58	}
59
60	pathSplited := strings.Split(imgFakePath.Real, ".")
61	imageExtension := pathSplited[len(pathSplited)-1]
62	img, err := dataToImage(file, imageExtension)
63
64	if err != nil {
65		fmt.Fprintln(w, "image "+imageName+" does not exist in server")
66	} else {
67		jpeg.Encode(w, img, nil) // Write to the ResponseWriter
68	}
69}
70func GetCaptcha(w http.ResponseWriter, r *http.Request) {
71
72	resp := generateCaptcha(6)
73	jsonResp, err := json.Marshal(resp)
74	check(err)
75	fmt.Fprintln(w, string(jsonResp))
76}