aboutsummaryrefslogtreecommitdiff
path: root/widget/api
diff options
context:
space:
mode:
Diffstat (limited to 'widget/api')
-rw-r--r--widget/api/credits.go23
-rw-r--r--widget/api/handle.go15
-rw-r--r--widget/api/hello.go4
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