diff options
| author | Anhgelus Morhtuuzh <william@herges.fr> | 2025-09-22 22:43:44 +0200 |
|---|---|---|
| committer | Anhgelus Morhtuuzh <william@herges.fr> | 2025-09-22 22:43:44 +0200 |
| commit | b19108ed8d4ad56e7bbf1ec59d0470e118275a49 (patch) | |
| tree | 630995aadb2a02bfc3e7a4af3c67c7ac5d786aa2 /widget/api | |
| parent | 433bd54a8b319377166ae3247d705684572cc2a4 (diff) | |
feat(widget): api to handle easily hello
Diffstat (limited to 'widget/api')
| -rw-r--r-- | widget/api/handle.go | 34 | ||||
| -rw-r--r-- | widget/api/hello.go | 25 |
2 files changed, 59 insertions, 0 deletions
diff --git a/widget/api/handle.go b/widget/api/handle.go new file mode 100644 index 0000000..e04d3d2 --- /dev/null +++ b/widget/api/handle.go @@ -0,0 +1,34 @@ +package api + +import ( + "fmt" + "io" + "os" +) + +type Widget struct { + Hello + Writer io.Writer +} + +func NewWidget(name, id string) *Widget { + return &Widget{ + Hello: Hello{ + Name: name, + ID: id, + Version: 1, + }, + Writer: os.Stdout, + } +} + +func (w *Widget) Handle() error { + if len(os.Args) < 2 { + return fmt.Errorf("no method") + } + switch Method(os.Args[1]) { + case MethodHello: + return w.Hello.Respond(w.Writer) + } + return fmt.Errorf("unknown method: %s", os.Args[1]) +} diff --git a/widget/api/hello.go b/widget/api/hello.go new file mode 100644 index 0000000..7995a36 --- /dev/null +++ b/widget/api/hello.go @@ -0,0 +1,25 @@ +package api + +import ( + "encoding/json" + "io" +) + +type Method string + +const MethodHello Method = "hello" + +type Hello struct { + Name string `json:"name"` + ID string `json:"id"` + Version uint `json:"version"` +} + +func (h *Hello) Respond(w io.Writer) error { + b, err := json.Marshal(h) + if err != nil { + return err + } + _, err = w.Write(b) + return err +} |
