diff options
| author | AlexanderCurl <alexc@alexc.hu> | 2026-04-18 17:46:06 +0100 |
|---|---|---|
| committer | AlexanderCurl <alexc@alexc.hu> | 2026-04-18 17:46:06 +0100 |
| commit | 70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69 (patch) | |
| tree | ab1123d4067c1b086dd6faa7ee4ea643236b565a /raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/models | |
| parent | 5d94c0a7d44a2255b81815a52a7056a94a39842d (diff) | |
| download | RaveOS-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')
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) + } +} |