diff options
| author | Anhgelus Morhtuuzh <william@herges.fr> | 2025-09-22 23:00:18 +0200 |
|---|---|---|
| committer | Anhgelus Morhtuuzh <william@herges.fr> | 2025-09-22 23:00:18 +0200 |
| commit | 215ce412a8bf37f31f5e779fe45930b87b1bffec (patch) | |
| tree | 2d1ff059478e1546cb8b192739aa1becc6082c7c /widget/api | |
| parent | b19108ed8d4ad56e7bbf1ec59d0470e118275a49 (diff) | |
feat(widget): creditsfeat/custom-widget
Diffstat (limited to 'widget/api')
| -rw-r--r-- | widget/api/credits.go | 23 | ||||
| -rw-r--r-- | widget/api/handle.go | 15 | ||||
| -rw-r--r-- | widget/api/hello.go | 4 |
3 files changed, 38 insertions, 4 deletions
diff --git a/widget/api/credits.go b/widget/api/credits.go new file mode 100644 index 0000000..e30cbea --- /dev/null +++ b/widget/api/credits.go @@ -0,0 +1,23 @@ +package api + +import ( + "encoding/json" + "io" +) + +const MethodCredits Method = "credits" + +type Credits struct { + Author string `json:"author"` + Homepage string `json:"homepage"` + Other []string `json:"other,omitempty"` +} + +func (c *Credits) Respond(w io.Writer, _ ...string) error { + b, err := json.Marshal(c) + if err != nil { + return err + } + _, err = w.Write(b) + return err +} diff --git a/widget/api/handle.go b/widget/api/handle.go index e04d3d2..fed2142 100644 --- a/widget/api/handle.go +++ b/widget/api/handle.go @@ -8,16 +8,27 @@ import ( type Widget struct { Hello + Credits Writer io.Writer } -func NewWidget(name, id string) *Widget { +type MethodResponder interface { + Respond(io.Writer, ...string) error +} + +type Method string + +func NewWidget(name, id string, author, homepage string) *Widget { return &Widget{ Hello: Hello{ Name: name, ID: id, Version: 1, }, + Credits: Credits{ + Author: author, + Homepage: homepage, + }, Writer: os.Stdout, } } @@ -29,6 +40,8 @@ func (w *Widget) Handle() error { switch Method(os.Args[1]) { case MethodHello: return w.Hello.Respond(w.Writer) + case MethodCredits: + return w.Credits.Respond(w.Writer) } return fmt.Errorf("unknown method: %s", os.Args[1]) } diff --git a/widget/api/hello.go b/widget/api/hello.go index 7995a36..fd071d5 100644 --- a/widget/api/hello.go +++ b/widget/api/hello.go @@ -5,8 +5,6 @@ import ( "io" ) -type Method string - const MethodHello Method = "hello" type Hello struct { @@ -15,7 +13,7 @@ type Hello struct { Version uint `json:"version"` } -func (h *Hello) Respond(w io.Writer) error { +func (h *Hello) Respond(w io.Writer, _ ...string) error { b, err := json.Marshal(h) if err != nil { return err |
