1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-01-24 13:32:50 -05:00
Files
DankMaterialShell/core/internal/server/router.go

176 lines
5.0 KiB
Go

package server
import (
"fmt"
"net"
"strings"
"github.com/AvengeMedia/DankMaterialShell/core/internal/server/apppicker"
"github.com/AvengeMedia/DankMaterialShell/core/internal/server/bluez"
"github.com/AvengeMedia/DankMaterialShell/core/internal/server/brightness"
"github.com/AvengeMedia/DankMaterialShell/core/internal/server/clipboard"
"github.com/AvengeMedia/DankMaterialShell/core/internal/server/cups"
"github.com/AvengeMedia/DankMaterialShell/core/internal/server/dwl"
"github.com/AvengeMedia/DankMaterialShell/core/internal/server/evdev"
"github.com/AvengeMedia/DankMaterialShell/core/internal/server/extworkspace"
"github.com/AvengeMedia/DankMaterialShell/core/internal/server/freedesktop"
"github.com/AvengeMedia/DankMaterialShell/core/internal/server/loginctl"
"github.com/AvengeMedia/DankMaterialShell/core/internal/server/models"
"github.com/AvengeMedia/DankMaterialShell/core/internal/server/network"
serverPlugins "github.com/AvengeMedia/DankMaterialShell/core/internal/server/plugins"
"github.com/AvengeMedia/DankMaterialShell/core/internal/server/wayland"
"github.com/AvengeMedia/DankMaterialShell/core/internal/server/wlroutput"
)
func RouteRequest(conn net.Conn, req models.Request) {
if strings.HasPrefix(req.Method, "network.") {
if networkManager == nil {
models.RespondError(conn, req.ID, "network manager not initialized")
return
}
network.HandleRequest(conn, req, networkManager)
return
}
if strings.HasPrefix(req.Method, "plugins.") {
serverPlugins.HandleRequest(conn, req)
return
}
if strings.HasPrefix(req.Method, "loginctl.") {
if loginctlManager == nil {
models.RespondError(conn, req.ID, "loginctl manager not initialized")
return
}
loginctl.HandleRequest(conn, req, loginctlManager)
return
}
if strings.HasPrefix(req.Method, "freedesktop.") {
if freedesktopManager == nil {
models.RespondError(conn, req.ID, "freedesktop manager not initialized")
return
}
freedesktop.HandleRequest(conn, req, freedesktopManager)
return
}
if strings.HasPrefix(req.Method, "wayland.") {
if waylandManager == nil {
models.RespondError(conn, req.ID, "wayland manager not initialized")
return
}
wayland.HandleRequest(conn, req, waylandManager)
return
}
if strings.HasPrefix(req.Method, "bluetooth.") {
if bluezManager == nil {
models.RespondError(conn, req.ID, "bluetooth manager not initialized")
return
}
bluez.HandleRequest(conn, req, bluezManager)
return
}
if strings.HasPrefix(req.Method, "browser.") || strings.HasPrefix(req.Method, "apppicker.") {
if appPickerManager == nil {
models.RespondError(conn, req.ID, "apppicker manager not initialized")
return
}
apppicker.HandleRequest(conn, req, appPickerManager)
return
}
if strings.HasPrefix(req.Method, "cups.") {
if cupsManager == nil {
models.RespondError(conn, req.ID, "CUPS manager not initialized")
return
}
cups.HandleRequest(conn, req, cupsManager)
return
}
if strings.HasPrefix(req.Method, "dwl.") {
if dwlManager == nil {
models.RespondError(conn, req.ID, "dwl manager not initialized")
return
}
dwl.HandleRequest(conn, req, dwlManager)
return
}
if strings.HasPrefix(req.Method, "brightness.") {
if brightnessManager == nil {
models.RespondError(conn, req.ID, "brightness manager not initialized")
return
}
brightness.HandleRequest(conn, req, brightnessManager)
return
}
if strings.HasPrefix(req.Method, "extworkspace.") {
if extWorkspaceManager == nil {
if extWorkspaceAvailable.Load() {
extWorkspaceInitMutex.Lock()
if extWorkspaceManager == nil {
if err := InitializeExtWorkspaceManager(); err != nil {
extWorkspaceInitMutex.Unlock()
models.RespondError(conn, req.ID, "extworkspace manager not available")
return
}
}
extWorkspaceInitMutex.Unlock()
} else {
models.RespondError(conn, req.ID, "extworkspace manager not initialized")
return
}
}
extworkspace.HandleRequest(conn, req, extWorkspaceManager)
return
}
if strings.HasPrefix(req.Method, "wlroutput.") {
if wlrOutputManager == nil {
models.RespondError(conn, req.ID, "wlroutput manager not initialized")
return
}
wlroutput.HandleRequest(conn, req, wlrOutputManager)
return
}
if strings.HasPrefix(req.Method, "evdev.") {
if evdevManager == nil {
models.RespondError(conn, req.ID, "evdev manager not initialized")
return
}
evdev.HandleRequest(conn, req, evdevManager)
return
}
if strings.HasPrefix(req.Method, "clipboard.") {
if clipboardManager == nil {
models.RespondError(conn, req.ID, "clipboard manager not initialized")
return
}
clipboard.HandleRequest(conn, req, clipboardManager)
return
}
switch req.Method {
case "ping":
models.Respond(conn, req.ID, "pong")
case "getServerInfo":
info := getServerInfo()
models.Respond(conn, req.ID, info)
case "subscribe":
handleSubscribe(conn, req)
case "matugen.queue":
handleMatugenQueue(conn, req)
case "matugen.status":
handleMatugenStatus(conn, req)
default:
models.RespondError(conn, req.ID, fmt.Sprintf("unknown method: %s", req.Method))
}
}