summaryrefslogtreecommitdiff
path: root/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/models
diff options
context:
space:
mode:
authorAlexanderCurl <alexc@alexc.hu>2026-04-18 17:46:06 +0100
committerAlexanderCurl <alexc@alexc.hu>2026-04-18 17:46:06 +0100
commit70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69 (patch)
treeab1123d4067c1b086dd6faa7ee4ea643236b565a /raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/models
parent5d94c0a7d44a2255b81815a52a7056a94a39842d (diff)
downloadRaveOS-PKGBUILD-70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69.tar.gz
RaveOS-PKGBUILD-70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69.zip
Replaced file structures for themes in the correct format
Diffstat (limited to 'raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/models')
-rw-r--r--raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/models/types.go47
-rw-r--r--raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/models/types_test.go52
2 files changed, 99 insertions, 0 deletions
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/models/types.go b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/models/types.go
new file mode 100644
index 0000000..2933fb5
--- /dev/null
+++ b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/models/types.go
@@ -0,0 +1,47 @@
+package models
+
+import (
+ "encoding/json"
+ "net"
+
+ "github.com/AvengeMedia/DankMaterialShell/core/internal/log"
+ "github.com/AvengeMedia/DankMaterialShell/core/internal/server/params"
+)
+
+type Request struct {
+ ID int `json:"id,omitempty"`
+ Method string `json:"method"`
+ Params map[string]any `json:"params,omitempty"`
+}
+
+func Get[T any](r Request, key string) (T, bool) {
+ v, err := params.Get[T](r.Params, key)
+ return v, err == nil
+}
+
+func GetOr[T any](r Request, key string, def T) T {
+ return params.GetOpt(r.Params, key, def)
+}
+
+type Response[T any] struct {
+ ID int `json:"id,omitempty"`
+ Result *T `json:"result,omitempty"`
+ Error string `json:"error,omitempty"`
+}
+
+func RespondError(conn net.Conn, id int, errMsg string) {
+ log.Errorf("DMS API Error: id=%d error=%s", id, errMsg)
+ resp := Response[any]{ID: id, Error: errMsg}
+ json.NewEncoder(conn).Encode(resp)
+}
+
+func Respond[T any](conn net.Conn, id int, result T) {
+ resp := Response[T]{ID: id, Result: &result}
+ json.NewEncoder(conn).Encode(resp)
+}
+
+type SuccessResult struct {
+ Success bool `json:"success"`
+ Message string `json:"message,omitempty"`
+ Value string `json:"value,omitempty"`
+}
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/models/types_test.go b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/models/types_test.go
new file mode 100644
index 0000000..98f9528
--- /dev/null
+++ b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/models/types_test.go
@@ -0,0 +1,52 @@
+package models
+
+import "testing"
+
+func TestGet(t *testing.T) {
+ req := Request{Params: map[string]any{"name": "test", "count": 42, "enabled": true}}
+
+ name, ok := Get[string](req, "name")
+ if !ok || name != "test" {
+ t.Errorf("Get[string] = %q, %v; want 'test', true", name, ok)
+ }
+
+ count, ok := Get[int](req, "count")
+ if !ok || count != 42 {
+ t.Errorf("Get[int] = %d, %v; want 42, true", count, ok)
+ }
+
+ enabled, ok := Get[bool](req, "enabled")
+ if !ok || !enabled {
+ t.Errorf("Get[bool] = %v, %v; want true, true", enabled, ok)
+ }
+
+ _, ok = Get[string](req, "missing")
+ if ok {
+ t.Error("Get missing key should return false")
+ }
+
+ _, ok = Get[int](req, "name")
+ if ok {
+ t.Error("Get wrong type should return false")
+ }
+}
+
+func TestGetOr(t *testing.T) {
+ req := Request{Params: map[string]any{"name": "test", "enabled": true}}
+
+ if v := GetOr(req, "name", "default"); v != "test" {
+ t.Errorf("GetOr existing = %q; want 'test'", v)
+ }
+
+ if v := GetOr(req, "missing", "default"); v != "default" {
+ t.Errorf("GetOr missing = %q; want 'default'", v)
+ }
+
+ if v := GetOr(req, "enabled", false); !v {
+ t.Errorf("GetOr bool = %v; want true", v)
+ }
+
+ if v := GetOr(req, "name", 0); v != 0 {
+ t.Errorf("GetOr wrong type = %d; want 0 (default)", v)
+ }
+}