From b65489ac60c2aaf85ca1744bd980d7c0eb625379 Mon Sep 17 00:00:00 2001 From: Akeda Bagus Date: Sat, 6 Feb 2016 21:55:07 +0700 Subject: [PATCH 1/2] Added Notification type and initial member method to retrieve it. This change also added Notifications in member. Resolves #16. --- member.go | 13 ++++++++++ notification.go | 68 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 notification.go diff --git a/member.go b/member.go index 29511d2..d9d8603 100644 --- a/member.go +++ b/member.go @@ -90,6 +90,19 @@ func (m *Member) Boards(field ...string) (boards []Board, err error) { return } +func (m *Member) Notifications() (notifications []Notification, err error) { + body, err := m.client.Get("/members/" + m.Id + "/notifications") + if err != nil { + return + } + + err = json.Unmarshal(body, ¬ifications) + for i := range notifications { + notifications[i].client = m.client + } + return +} + // TODO: Avatar sizes [170, 30] func (m *Member) AvatarUrl() string { return "https://trello-avatars.s3.amazonaws.com/" + m.AvatarHash + "/170.png" diff --git a/notification.go b/notification.go new file mode 100644 index 0000000..5f80ff9 --- /dev/null +++ b/notification.go @@ -0,0 +1,68 @@ +/* +Copyright 2014 go-trello authors. All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package trello + +type Notification struct { + client *Client + Id string `json:"id"` + Unread bool `json:"unread"` + Type string `json:"type"` + Date string `json:"date"` + Data struct { + ListBefore struct { + Id string `json:"id"` + Name string `json:"name"` + } `json:"listBefore"` + ListAfter struct { + Id string `json:"id"` + Name string `json:"name"` + } `json:"listAfter"` + Board struct { + Id string `json:"id"` + Name string `json:"name"` + ShortLink string `json:"shortLink"` + } `json:"board"` + Card struct { + Id string `json:"id"` + Name string `json:"name"` + ShortLink string `json:"shortLink"` + IdShort int `json:"idShort"` + } `json:"card"` + Old struct { + IdList string `json:"idList"` + } `json:"old"` + } `json:"data"` + IdMemberCreator string `json:"idMemberCreator"` + MemberCreator struct { + Id string `json:"id"` + AvatarHash string `json:"avatarHash"` + FullName string `json:"fullName"` + Initials string `json:"initials"` + Username string `json:"username"` + } `json:"memberCreator"` +} + +func (c *Client) Notification(notificationId string) (notification *Notification, err error) { + body, err := c.Get("/notifications/" + notificationId) + if err != nil { + return + } + + err = json.Unmarshal(body, &Notification) + notification.client = c + return +} From ee635b2d31ebf853dd51e2cd577285b14eca9308 Mon Sep 17 00:00:00 2001 From: Akeda Bagus Date: Sat, 6 Feb 2016 22:19:02 +0700 Subject: [PATCH 2/2] Fixed missing json package and wrong passed arg in Unmarshal. --- notification.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/notification.go b/notification.go index 5f80ff9..ddcdfe8 100644 --- a/notification.go +++ b/notification.go @@ -16,6 +16,8 @@ limitations under the License. package trello +import "encoding/json" + type Notification struct { client *Client Id string `json:"id"` @@ -62,7 +64,7 @@ func (c *Client) Notification(notificationId string) (notification *Notification return } - err = json.Unmarshal(body, &Notification) + err = json.Unmarshal(body, ¬ification) notification.client = c return }