/
api.go
59 lines (47 loc) · 1.01 KB
/
api.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
package api
import (
"github.com/gorilla/mux"
"log"
"net/http"
)
const (
ProxyEndpoint = "/rproxy"
port = ":8000"
)
type InspectorError struct {
Error error
Code int
}
type ApiHandler func(w http.ResponseWriter, r *http.Request) *InspectorError
func Init() {
log.Println("Initializing HTTP handlers.")
r := mux.NewRouter()
initProjectApi(r)
initProxyApi(r)
http.Handle("/", r)
}
func (fn ApiHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
err := fn(w, r)
if err == nil || err.Code == 200 {
return
}
switch {
case err.Code >= 300 && err.Code < 400:
http.Error(w, getErrorString(err), err.Code)
return
case err.Code >= 400 && err.Code < 500:
http.Error(w, getErrorString(err), err.Code)
return
case err.Code >= 500 && err.Code < 600:
http.Error(w, getErrorString(err), err.Code)
return
}
http.Error(w, err.Error.Error(), err.Code)
}
func getErrorString(e *InspectorError) string {
if e == nil || e.Error == nil {
return ""
} else {
return e.Error.Error()
}
}