/
Router.go
83 lines (70 loc) · 2.12 KB
/
Router.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
// Router
package main
import (
"net/http"
"controller"
"fmt"
"github.com/drone/routes"
"github.com/go-martini/martini"
"responses"
"service"
"strconv"
"strings"
)
type Server *martini.ClassicMartini
func Run() {
mux := martini.Classic()
UnAuthorizedGroup(mux)
mux.Use(FilterToken)
AutHorizedGroup(mux)
http.Handle("/", mux)
http.ListenAndServe(":8080", nil)
// mux.Run()
}
func Routes() *martini.ClassicMartini {
mux := Server(martini.Classic())
UnAuthorizedGroup(mux)
AutHorizedGroup(mux)
return mux
}
func UnAuthorizedGroup(mux Server) {
mux.Post("/api/v1/users", controller.CreateUser)
mux.Post("/api/v1/users/token", controller.GenerateNewToken)
//mux.Static("/static", service.GetRootPath())
}
func AutHorizedGroup(mux Server) {
mux.Post("/api/v1/users/index", controller.GetUsers)
mux.Get("/api/v1/users/:id/blocked", controller.GetUsersBlocked)
mux.Put("/api/v1/users/:id/user_name", controller.UpdateUserName)
mux.Get("/api/v1/users/:id", controller.GetUser)
mux.Delete("/api/v1/users/:id", controller.DeleteUser)
mux.Put("/api/v1/users/:id/mobile_phone", controller.UpdatePhoneNumber)
mux.Put("/api/v1/users/:id/avatar", controller.UploadFile)
mux.Post("/api/v1/users/:id/block", controller.BlockFriend)
mux.Delete("/api/v1/users/:id/block", controller.UnBlockFriend)
}
func FilterToken(w http.ResponseWriter, r *http.Request) {
method := r.Method
url := fmt.Sprintf("%s", r.URL)
allowedMethodUnAuth := (method == "POST")
listExceptionURL := (url == "/api/v1/users" || url == "/api/v1/users/token")
serveStaticPath := (strings.Contains(url, "/static/") && method == "GET")
if !serveStaticPath {
service.SetHeaderParameterJson(w)
}
switch {
case serveStaticPath:
return
case listExceptionURL && allowedMethodUnAuth:
return
//TO DO: case create user auth header for api_key & secret_api
default:
status, message, mobilePhone := service.GetTokenHeader(r.Header.Get("Authorization"))
r.Header.Set("mobile_phone", mobilePhone)
r.Header.Set("status_filter", strconv.Itoa(status))
if status != 200 {
w.WriteHeader(status)
routes.ServeJson(w, responses.DefaultMessage{status, message})
}
}
}