summaryrefslogtreecommitdiffstats
path: root/model/command.go
diff options
context:
space:
mode:
author=Corey Hulen <corey@hulen.com>2015-06-14 23:53:32 -0800
committer=Corey Hulen <corey@hulen.com>2015-06-14 23:53:32 -0800
commit56e74239d6b34df8f30ef046f0b0ff4ff0866a71 (patch)
tree044da29848cf0f5c8607eac34de69065171669cf /model/command.go
downloadchat-56e74239d6b34df8f30ef046f0b0ff4ff0866a71.tar.gz
chat-56e74239d6b34df8f30ef046f0b0ff4ff0866a71.tar.bz2
chat-56e74239d6b34df8f30ef046f0b0ff4ff0866a71.zip
first commit
Diffstat (limited to 'model/command.go')
-rw-r--r--model/command.go53
1 files changed, 53 insertions, 0 deletions
diff --git a/model/command.go b/model/command.go
new file mode 100644
index 000000000..23573205e
--- /dev/null
+++ b/model/command.go
@@ -0,0 +1,53 @@
+// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+package model
+
+import (
+ "encoding/json"
+ "io"
+)
+
+const (
+ RESP_EXECUTED = "executed"
+)
+
+type Command struct {
+ Command string `json:"command"`
+ Response string `json:"reponse"`
+ GotoLocation string `json:"goto_location"`
+ ChannelId string `json:"channel_id"`
+ Suggest bool `json:"-"`
+ Suggestions []*SuggestCommand `json:"suggestions"`
+}
+
+func (o *Command) AddSuggestion(suggest *SuggestCommand) {
+
+ if o.Suggest {
+ if o.Suggestions == nil {
+ o.Suggestions = make([]*SuggestCommand, 0, 128)
+ }
+
+ o.Suggestions = append(o.Suggestions, suggest)
+ }
+}
+
+func (o *Command) ToJson() string {
+ b, err := json.Marshal(o)
+ if err != nil {
+ return ""
+ } else {
+ return string(b)
+ }
+}
+
+func CommandFromJson(data io.Reader) *Command {
+ decoder := json.NewDecoder(data)
+ var o Command
+ err := decoder.Decode(&o)
+ if err == nil {
+ return &o
+ } else {
+ return nil
+ }
+}