93 lines
2.3 KiB
Go
93 lines
2.3 KiB
Go
package router
|
|
|
|
import (
|
|
"encoding/json"
|
|
"etrismartfarmpoc/model"
|
|
"net/http"
|
|
"strings"
|
|
|
|
"github.com/gorilla/mux"
|
|
"github.com/urfave/negroni"
|
|
)
|
|
|
|
type Notification struct {
|
|
Msg string `json:"msg"`
|
|
}
|
|
|
|
var db model.DBHandler
|
|
|
|
func init() {
|
|
var err error
|
|
db, err = model.NewDBHandler("postgres", "dump.db")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
// var rd *render.Render = render.New()
|
|
func NewRouter() http.Handler {
|
|
mux := mux.NewRouter()
|
|
mux.HandleFunc("/noti", GetNotification).Methods("GET")
|
|
mux.HandleFunc("/controllers", GetControllerList).Methods("GET")
|
|
mux.HandleFunc("/controllers", PostController).Methods("POST")
|
|
mux.HandleFunc("/services", GetServices).Methods("GET")
|
|
mux.HandleFunc("/services", PostService).Methods("POST")
|
|
mux.HandleFunc("/services", PutServices).Methods("PUT")
|
|
mux.HandleFunc("/devices", PostDevice).Methods("POST")
|
|
mux.HandleFunc("/devices", GetDevices).Methods("GET")
|
|
mux.HandleFunc("/devices", DeleteDevice).Methods("DELETE")
|
|
mux.HandleFunc("/devices", PutDevice).Methods("PUT", "OPTIONS")
|
|
mux.HandleFunc("/device/{id}", GetDeviceWatch).Methods("GET")
|
|
mux.HandleFunc("/device/{id}", PutDeviceStatus).Methods("PUT")
|
|
mux.HandleFunc("/discover", GetDiscoveredDevices).Methods("GET")
|
|
mux.PathPrefix("/services/").HandlerFunc(RouteRequestToService)
|
|
|
|
n := negroni.Classic() // 파일 서버 및 로그기능을 제공함
|
|
n.UseHandler(mux)
|
|
|
|
return n
|
|
}
|
|
|
|
func EchoRoute(w http.ResponseWriter, r *http.Request) {
|
|
// w.Write([]byte(r.RequestURI))
|
|
// token := strings.Split(r.RequestURI, "/")
|
|
|
|
l := len([]rune("/services/"))
|
|
idx := strings.Index(r.RequestURI[l:], "/")
|
|
id := r.RequestURI[l : l+idx]
|
|
url := r.RequestURI[l+idx:]
|
|
|
|
m := make(map[string]string)
|
|
m["id"] = id
|
|
m["url"] = url
|
|
|
|
encoder := json.NewEncoder(w)
|
|
encoder.Encode(m)
|
|
}
|
|
|
|
// func GetDiscoveredDevices(w http.ResponseWriter, r *http.Request) {
|
|
// noti := make(chan string, 1)
|
|
// mutex.Lock()
|
|
// discoveredNotifications = append(discoveredNotifications, noti)
|
|
// mutex.Unlock()
|
|
// conn, err := upgrader.Upgrade(w, r, nil)
|
|
// if err != nil {
|
|
// w.WriteHeader(http.StatusBadRequest)
|
|
// w.Write([]byte(err.Error()))
|
|
// return
|
|
// }
|
|
|
|
// for {
|
|
// <-noti
|
|
// // fmt.Println("Write!!", discoveredDevices)
|
|
// if conn.WriteJSON(discoveredDevices) != nil {
|
|
// log.Println(err)
|
|
// return
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
// func mapService(urls []string) {
|
|
|
|
// }
|