aboutsummaryrefslogtreecommitdiff
path: root/widget/api/handle.go
diff options
context:
space:
mode:
Diffstat (limited to 'widget/api/handle.go')
-rw-r--r--widget/api/handle.go34
1 files changed, 34 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])
+}