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}