arnaucube
arnaucube/galdricPublic Self-hosted repository
galdric/server.go
server.goRaw
 1package main
 2
 3import (
 4	"fmt"
 5	"log"
 6	"net/http"
 7	"time"
 8
 9	"github.com/gorilla/mux"
10)
11
12type ImageModel struct {
13	File []byte `json:"file"`
14}
15
16type Route struct {
17	Name        string
18	Method      string
19	Pattern     string
20	HandlerFunc http.HandlerFunc
21}
22type Routes []Route
23
24var routes = Routes{
25	Route{
26		"Index",
27		"GET",
28		"/",
29		Index,
30	},
31	Route{
32		"NewImage",
33		"POST",
34		"/image",
35		NewImage,
36	},
37}
38
39func Logger(inner http.Handler, name string) http.Handler {
40	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
41		start := time.Now()
42
43		inner.ServeHTTP(w, r)
44
45		log.Printf(
46			"%s\t%s\t%s\t%s",
47			r.Method,
48			r.RequestURI,
49			name,
50			time.Since(start),
51		)
52	})
53}
54func NewRouter() *mux.Router {
55	router := mux.NewRouter().StrictSlash(true)
56	for _, route := range routes {
57		var handler http.Handler
58		handler = route.HandlerFunc
59		handler = Logger(handler, route.Name)
60
61		router.
62			Methods(route.Method).
63			Path(route.Pattern).
64			Name(route.Name).
65			Handler(handler)
66	}
67	return router
68}
69
70func Index(w http.ResponseWriter, r *http.Request) {
71	fmt.Fprintln(w, "send images to the /image path")
72}
73func NewImage(w http.ResponseWriter, r *http.Request) {
74	_, handler, err := r.FormFile("file")
75	check(err)
76
77	//imageName := strings.Split(handler.Filename, ".")[0]
78	//fileName := imageName + ".png"
79
80	//data, err := ioutil.ReadAll(file)
81	//check(err)
82	img := readImage(handler.Filename)
83	result := knn(dataset, img)
84
85	fmt.Println("seems to be a " + result)
86	fmt.Fprintln(w, "seems to be a "+result)
87}