api split scopes.

This commit is contained in:
Miroslav Šedivý
2022-01-15 14:39:16 +01:00
parent 37fbb090a0
commit b2af871c9a
4 changed files with 76 additions and 50 deletions
@@ -17,14 +17,32 @@ type ApiManagerCtx struct {
func New(roomManager types.RoomManager, conf *config.API) *ApiManagerCtx { func New(roomManager types.RoomManager, conf *config.API) *ApiManagerCtx {
return &ApiManagerCtx{ return &ApiManagerCtx{
logger: log.With().Str("module", "router").Logger(), logger: log.With().Str("module", "api").Logger(),
rooms: roomManager, rooms: roomManager,
conf: conf, conf: conf,
} }
} }
func (manager *ApiManagerCtx) Mount(r chi.Router) { func (manager *ApiManagerCtx) Mount(r chi.Router) {
r.Get("/config/rooms", manager.roomsConfig) //
// config
//
r.Get("/config/rooms", manager.configRooms)
//
// pull
//
r.Route("/pull", func(r chi.Router) {
r.Get("/", manager.pullStatus)
r.Post("/", manager.pullStart)
r.Delete("/", manager.pullStop)
})
//
// rooms
//
r.Get("/rooms", manager.roomsList) r.Get("/rooms", manager.roomsList)
r.Post("/rooms", manager.roomCreate) r.Post("/rooms", manager.roomCreate)
@@ -41,10 +59,4 @@ func (manager *ApiManagerCtx) Mount(r chi.Router) {
r.Post("/restart", manager.roomGenericAction(manager.rooms.Restart)) r.Post("/restart", manager.roomGenericAction(manager.rooms.Restart))
r.Post("/recreate", manager.roomRecreate) r.Post("/recreate", manager.roomRecreate)
}) })
r.Route("/pull", func(r chi.Router) {
r.Get("/", manager.roomPullStatus)
r.Post("/", manager.roomPullStart)
r.Delete("/", manager.roomPullStop)
})
} }
+13
View File
@@ -0,0 +1,13 @@
package api
import (
"encoding/json"
"net/http"
)
func (manager *ApiManagerCtx) configRooms(w http.ResponseWriter, r *http.Request) {
response := manager.rooms.Config()
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(response)
}
+43
View File
@@ -0,0 +1,43 @@
package api
import (
"encoding/json"
"net/http"
"m1k1o/neko_rooms/internal/types"
)
func (manager *ApiManagerCtx) pullStart(w http.ResponseWriter, r *http.Request) {
request := types.PullStart{}
if err := json.NewDecoder(r.Body).Decode(&request); err != nil {
http.Error(w, err.Error(), 400)
return
}
err := manager.rooms.PullStart(request)
if err != nil {
http.Error(w, err.Error(), 500)
return
}
response := manager.rooms.PullStatus()
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(response)
}
func (manager *ApiManagerCtx) pullStatus(w http.ResponseWriter, r *http.Request) {
response := manager.rooms.PullStatus()
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(response)
}
func (manager *ApiManagerCtx) pullStop(w http.ResponseWriter, r *http.Request) {
err := manager.rooms.PullStop()
if err != nil {
http.Error(w, err.Error(), 500)
return
}
w.WriteHeader(http.StatusNoContent)
}
-42
View File
@@ -9,13 +9,6 @@ import (
"m1k1o/neko_rooms/internal/types" "m1k1o/neko_rooms/internal/types"
) )
func (manager *ApiManagerCtx) roomsConfig(w http.ResponseWriter, r *http.Request) {
response := manager.rooms.Config()
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(response)
}
func (manager *ApiManagerCtx) roomsList(w http.ResponseWriter, r *http.Request) { func (manager *ApiManagerCtx) roomsList(w http.ResponseWriter, r *http.Request) {
response, err := manager.rooms.List() response, err := manager.rooms.List()
if err != nil { if err != nil {
@@ -157,38 +150,3 @@ func (manager *ApiManagerCtx) roomGenericAction(action func(id string) error) fu
w.WriteHeader(http.StatusNoContent) w.WriteHeader(http.StatusNoContent)
} }
} }
func (manager *ApiManagerCtx) roomPullStart(w http.ResponseWriter, r *http.Request) {
request := types.PullStart{}
if err := json.NewDecoder(r.Body).Decode(&request); err != nil {
http.Error(w, err.Error(), 400)
return
}
err := manager.rooms.PullStart(request)
if err != nil {
http.Error(w, err.Error(), 500)
return
}
response := manager.rooms.PullStatus()
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(response)
}
func (manager *ApiManagerCtx) roomPullStatus(w http.ResponseWriter, r *http.Request) {
response := manager.rooms.PullStatus()
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(response)
}
func (manager *ApiManagerCtx) roomPullStop(w http.ResponseWriter, r *http.Request) {
err := manager.rooms.PullStop()
if err != nil {
http.Error(w, err.Error(), 500)
return
}
w.WriteHeader(http.StatusNoContent)
}