diff options
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 |
commit | 56e74239d6b34df8f30ef046f0b0ff4ff0866a71 (patch) | |
tree | 044da29848cf0f5c8607eac34de69065171669cf /model/command.go | |
download | chat-56e74239d6b34df8f30ef046f0b0ff4ff0866a71.tar.gz chat-56e74239d6b34df8f30ef046f0b0ff4ff0866a71.tar.bz2 chat-56e74239d6b34df8f30ef046f0b0ff4ff0866a71.zip |
first commit
Diffstat (limited to 'model/command.go')
-rw-r--r-- | model/command.go | 53 |
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 + } +} |