diff options
author | JoramWilander <jwawilander@gmail.com> | 2015-07-27 11:30:03 -0400 |
---|---|---|
committer | JoramWilander <jwawilander@gmail.com> | 2015-08-11 12:09:54 -0400 |
commit | 1c0ee4d2f65d1d4434a3a16070abe7d61a268ce6 (patch) | |
tree | a10ebb3fb82ad16c015276b0618c1beda18755ff /model | |
parent | 4c7cdb20f074e2c06a08cd64a57060b8e8b64d2e (diff) | |
download | chat-1c0ee4d2f65d1d4434a3a16070abe7d61a268ce6.tar.gz chat-1c0ee4d2f65d1d4434a3a16070abe7d61a268ce6.tar.bz2 chat-1c0ee4d2f65d1d4434a3a16070abe7d61a268ce6.zip |
added getChannel api service and use that over getChannels where appropriate on client
Diffstat (limited to 'model')
-rw-r--r-- | model/channel_data.go | 43 | ||||
-rw-r--r-- | model/client.go | 9 |
2 files changed, 52 insertions, 0 deletions
diff --git a/model/channel_data.go b/model/channel_data.go new file mode 100644 index 000000000..234bdec6e --- /dev/null +++ b/model/channel_data.go @@ -0,0 +1,43 @@ +// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved. +// See License.txt for license information. + +package model + +import ( + "encoding/json" + "io" +) + +type ChannelData struct { + Channel *Channel `json:"channel"` + Member *ChannelMember `json:"member"` +} + +func (o *ChannelData) Etag() string { + var mt int64 = 0 + if o.Member != nil { + mt = o.Member.LastUpdateAt + } + + return Etag(o.Channel.Id, o.Channel.UpdateAt, o.Channel.LastPostAt, mt) +} + +func (o *ChannelData) ToJson() string { + b, err := json.Marshal(o) + if err != nil { + return "" + } else { + return string(b) + } +} + +func ChannelDataFromJson(data io.Reader) *ChannelData { + decoder := json.NewDecoder(data) + var o ChannelData + err := decoder.Decode(&o) + if err == nil { + return &o + } else { + return nil + } +} diff --git a/model/client.go b/model/client.go index a5016fa2c..9ae0a66e5 100644 --- a/model/client.go +++ b/model/client.go @@ -390,6 +390,15 @@ func (c *Client) GetChannels(etag string) (*Result, *AppError) { } } +func (c *Client) GetChannel(id, etag string) (*Result, *AppError) { + if r, err := c.DoGet("/channels/"+id+"/", "", etag); err != nil { + return nil, err + } else { + return &Result{r.Header.Get(HEADER_REQUEST_ID), + r.Header.Get(HEADER_ETAG_SERVER), ChannelDataFromJson(r.Body)}, nil + } +} + func (c *Client) GetMoreChannels(etag string) (*Result, *AppError) { if r, err := c.DoGet("/channels/more", "", etag); err != nil { return nil, err |