pls pull #1
10 changed files with 99 additions and 13 deletions
|
@ -49,5 +49,5 @@ The config file is generated automatically on first startup.
|
|||
"name": "main1",
|
||||
"totalClients": 0,
|
||||
"neededSubscribePower": 0
|
||||
},
|
||||
}
|
||||
```
|
||||
|
|
|
@ -8,7 +8,7 @@ import (
|
|||
"github.com/go-chi/chi"
|
||||
)
|
||||
|
||||
func ChannelHandler(s Service) http.HandlerFunc {
|
||||
func ChannelAPIHandler(s Service) http.HandlerFunc {
|
||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
response.Handler(w, response.HandlerFunc(func() (int, error) {
|
||||
id, err := strconv.ParseUint(chi.URLParam(r, "id"), 10, 64)
|
||||
|
@ -26,7 +26,7 @@ func ChannelHandler(s Service) http.HandlerFunc {
|
|||
})
|
||||
}
|
||||
|
||||
func ChannelsHandler(s Service) http.HandlerFunc {
|
||||
func ChannelsAPIHandler(s Service) http.HandlerFunc {
|
||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
response.Handler(w, response.HandlerFunc(func() (int, error) {
|
||||
cc, err := s.Channels()
|
||||
|
|
|
@ -4,11 +4,11 @@ import (
|
|||
"github.com/go-chi/chi"
|
||||
)
|
||||
|
||||
func Routes(s Service) *chi.Mux {
|
||||
func APIRoutes(s Service) *chi.Mux {
|
||||
router := chi.NewRouter()
|
||||
|
||||
router.Get("/{id}", ChannelHandler(s))
|
||||
router.Get("/", ChannelsHandler(s))
|
||||
router.Get("/{id}", ChannelAPIHandler(s))
|
||||
router.Get("/", ChannelsAPIHandler(s))
|
||||
|
||||
return router
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ import (
|
|||
"github.com/go-chi/chi"
|
||||
)
|
||||
|
||||
func ClientHandler(s Service) http.HandlerFunc {
|
||||
func ClientAPIHandler(s Service) http.HandlerFunc {
|
||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
response.Handler(w, response.HandlerFunc(func() (int, error) {
|
||||
id, err := strconv.ParseUint(chi.URLParam(r, "id"), 10, 64)
|
||||
|
@ -26,7 +26,7 @@ func ClientHandler(s Service) http.HandlerFunc {
|
|||
})
|
||||
}
|
||||
|
||||
func ClientsHandler(s Service) http.HandlerFunc {
|
||||
func ClientsAPIHandler(s Service) http.HandlerFunc {
|
||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
response.Handler(w, response.HandlerFunc(func() (int, error) {
|
||||
cc, err := s.Clients()
|
||||
|
|
|
@ -4,11 +4,11 @@ import (
|
|||
"github.com/go-chi/chi"
|
||||
)
|
||||
|
||||
func Routes(s Service) *chi.Mux {
|
||||
func APIRoutes(s Service) *chi.Mux {
|
||||
router := chi.NewRouter()
|
||||
|
||||
router.Get("/{id}", ClientHandler(s))
|
||||
router.Get("/", ClientsHandler(s))
|
||||
router.Get("/{id}", ClientAPIHandler(s))
|
||||
router.Get("/", ClientsAPIHandler(s))
|
||||
|
||||
return router
|
||||
}
|
||||
|
|
20
features/server/handler.go
Normal file
20
features/server/handler.go
Normal file
|
@ -0,0 +1,20 @@
|
|||
package server
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"git.cliffbreak.de/haveachin/go-tsviewer/response"
|
||||
)
|
||||
|
||||
func InfoAPIHandler(s Service) http.HandlerFunc {
|
||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
response.Handler(w, response.HandlerFunc(func() (int, error) {
|
||||
s, err := s.Info()
|
||||
if err != nil {
|
||||
return http.StatusNotFound, err
|
||||
}
|
||||
|
||||
return response.New(s, r).Send(w, http.StatusOK)
|
||||
}))
|
||||
})
|
||||
}
|
13
features/server/routes.go
Normal file
13
features/server/routes.go
Normal file
|
@ -0,0 +1,13 @@
|
|||
package server
|
||||
|
||||
import (
|
||||
"github.com/go-chi/chi"
|
||||
)
|
||||
|
||||
func APIRoutes(s Service) *chi.Mux {
|
||||
router := chi.NewRouter()
|
||||
|
||||
router.Get("/info", InfoAPIHandler(s))
|
||||
|
||||
return router
|
||||
}
|
22
features/server/server.go
Normal file
22
features/server/server.go
Normal file
|
@ -0,0 +1,22 @@
|
|||
package server
|
||||
|
||||
import "time"
|
||||
|
||||
type Service interface {
|
||||
Info() (*Server, error)
|
||||
}
|
||||
|
||||
type Server struct {
|
||||
Name string `json:"name"`
|
||||
Status string `json:"status"`
|
||||
Version string `json:"version"`
|
||||
WelcomeMessage string `json:"welcomeMessage"`
|
||||
MaxClients int `json:"maxClients"`
|
||||
ClientsOnline int `json:"clientsOnline"`
|
||||
ReservedSlots int `json:"reservedSlots"`
|
||||
Uptime time.Duration `json:"uptime"`
|
||||
TotalPing float32 `json:"totalPing"`
|
||||
MinAndroidVersion int `json:"minAndroidVersion"`
|
||||
MinClientVersion int `json:"minClientVersion"`
|
||||
MiniOSVersion int `json:"miniOSVersion"`
|
||||
}
|
6
main.go
6
main.go
|
@ -8,6 +8,7 @@ import (
|
|||
"git.cliffbreak.de/haveachin/go-tsviewer/config"
|
||||
"git.cliffbreak.de/haveachin/go-tsviewer/features/channel"
|
||||
"git.cliffbreak.de/haveachin/go-tsviewer/features/client"
|
||||
"git.cliffbreak.de/haveachin/go-tsviewer/features/server"
|
||||
"git.cliffbreak.de/haveachin/go-tsviewer/service"
|
||||
"github.com/go-chi/chi"
|
||||
"github.com/go-chi/chi/middleware"
|
||||
|
@ -24,8 +25,9 @@ func Routes(s service.Service) *chi.Mux {
|
|||
)
|
||||
|
||||
router.Route("/v1", func(r chi.Router) {
|
||||
r.Mount("/channels", channel.Routes(s))
|
||||
r.Mount("/clients", client.Routes(s))
|
||||
r.Mount("/channels", channel.APIRoutes(s))
|
||||
r.Mount("/clients", client.APIRoutes(s))
|
||||
r.Mount("/server", server.APIRoutes(s))
|
||||
})
|
||||
|
||||
return router
|
||||
|
|
29
service/server.go
Normal file
29
service/server.go
Normal file
|
@ -0,0 +1,29 @@
|
|||
package service
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"git.cliffbreak.de/haveachin/go-tsviewer/features/server"
|
||||
)
|
||||
|
||||
func (s Service) Info() (*server.Server, error) {
|
||||
serverInfo, err := s.TSClient.Server.Info()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &server.Server{
|
||||
Name: serverInfo.Name,
|
||||
Status: serverInfo.Status,
|
||||
Version: serverInfo.Version,
|
||||
WelcomeMessage: serverInfo.WelcomeMessage,
|
||||
MaxClients: serverInfo.MaxClients,
|
||||
ClientsOnline: serverInfo.ClientsOnline,
|
||||
ReservedSlots: serverInfo.ReservedSlots,
|
||||
Uptime: time.Duration(serverInfo.Uptime) * time.Nanosecond,
|
||||
TotalPing: serverInfo.TotalPing,
|
||||
MinAndroidVersion: serverInfo.MinAndroidVersion,
|
||||
MinClientVersion: serverInfo.MinClientVersion,
|
||||
MiniOSVersion: serverInfo.MiniOSVersion,
|
||||
}, nil
|
||||
}
|
Loading…
Reference in a new issue