47 lines
1.1 KiB
Go
47 lines
1.1 KiB
Go
package server
|
|
|
|
import (
|
|
"net"
|
|
"net/http"
|
|
"sync"
|
|
|
|
"github.com/pkg/errors"
|
|
"github.com/gorilla/mux"
|
|
)
|
|
|
|
type Server struct {
|
|
HttpServer *http.Server
|
|
Listener net.Listener
|
|
wg sync.WaitGroup
|
|
}
|
|
|
|
var (
|
|
networkTCP = "tcp"
|
|
)
|
|
|
|
|
|
func NewServer(port string) (*Server, error) {
|
|
|
|
network := networkTCP
|
|
|
|
listener, err := net.Listen(network, ":" + port)
|
|
if err != nil {
|
|
return nil, errors.Wrap(err, "failed to create listener")
|
|
}
|
|
|
|
router := mux.NewRouter()
|
|
router.HandleFunc("/events", eventsHandler).Methods("POST")
|
|
router.HandleFunc("/events/json", eventsHandlerJson).Methods("POST")
|
|
router.HandleFunc("/health", healthHandler).Methods("GET")
|
|
router.HandleFunc("/health/toggle", healthToggleHandler).Methods("GET")
|
|
router.HandleFunc("/schema/get", getSchemaHandler).Methods("GET")
|
|
router.HandleFunc("/schema/refresh", refreshSchemaHandler).Methods("POST")
|
|
// router.HandleFunc("/test", testHandler).Methods("GET")
|
|
// router.HandleFunc("/stop", stopHandler).Methods("POST")
|
|
|
|
httpServer := &http.Server{Addr: ":" + port, Handler: router}
|
|
newServer := &Server{HttpServer: httpServer, Listener: listener}
|
|
return newServer, nil
|
|
|
|
}
|