1// Copyright © 2016 Aaron Longwell
2//
3// Use of this source code is governed by an MIT licese.
4// Details in the LICENSE file.
5
6package trello
7
8import (
9	"fmt"
10)
11
12// Member represents a Trello member.
13// https://developers.trello.com/reference/#member-object
14type Member struct {
15	client     *Client
16	ID         string `json:"id"`
17	Username   string `json:"username"`
18	FullName   string `json:"fullName"`
19	Initials   string `json:"initials"`
20	AvatarHash string `json:"avatarHash"`
21	Email      string `json:"email"`
22}
23
24// GetMember takes a member id and Arguments and returns a Member or an error.
25func (c *Client) GetMember(memberID string, args Arguments) (member *Member, err error) {
26	path := fmt.Sprintf("members/%s", memberID)
27	err = c.Get(path, args, &member)
28	if err == nil {
29		member.client = c
30	}
31	return
32}
33
34// GetMembers takes Arguments and returns a slice of all members of the organization or an error.
35func (o *Organization) GetMembers(args Arguments) (members []*Member, err error) {
36	path := fmt.Sprintf("organizations/%s/members", o.ID)
37	err = o.client.Get(path, args, &members)
38	for i := range members {
39		members[i].client = o.client
40	}
41	return
42}
43
44// GetMembers takes Arguments and returns a slice of all members of the Board or an error.
45func (b *Board) GetMembers(args Arguments) (members []*Member, err error) {
46	path := fmt.Sprintf("boards/%s/members", b.ID)
47	err = b.client.Get(path, args, &members)
48	for i := range members {
49		members[i].client = b.client
50	}
51	return
52}
53
54// GetMembers takes Arguments and returns a slice of all members of the Card or an error.
55func (c *Card) GetMembers(args Arguments) (members []*Member, err error) {
56	path := fmt.Sprintf("cards/%s/members", c.ID)
57	err = c.client.Get(path, args, &members)
58	for i := range members {
59		members[i].client = c.client
60	}
61	return
62}
63