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	"time"
11)
12
13// Token represents Trello tokens. Tokens can be used for setting up Webhooks among other things.
14// https://developers.trello.com/reference/#tokens
15type Token struct {
16	client      *Client
17	ID          string       `json:"id"`
18	DateCreated time.Time    `json:"dateCreated"`
19	DateExpires *time.Time   `json:"dateExpires"`
20	IDMember    string       `json:"idMember"`
21	Identifier  string       `json:"identifier"`
22	Permissions []Permission `json:"permissions"`
23}
24
25// Permission represent a Token's permissions.
26type Permission struct {
27	IDModel   string `json:"idModel"`
28	ModelType string `json:"modelType"`
29	Read      bool   `json:"read"`
30	Write     bool   `json:"write"`
31}
32
33// GetToken takes a token id and Arguments and GETs and returns the Token or an error.
34func (c *Client) GetToken(tokenID string, args Arguments) (token *Token, err error) {
35	path := fmt.Sprintf("tokens/%s", tokenID)
36	err = c.Get(path, args, &token)
37	if token != nil {
38		token.client = c
39	}
40	return
41}
42