-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathproject.go
More file actions
104 lines (86 loc) · 3.11 KB
/
project.go
File metadata and controls
104 lines (86 loc) · 3.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
package ulule
import (
"strconv"
)
// ProjectFilter defines filters that can be used when listing projects
type ProjectFilter string
const (
ProjectFilterCreated ProjectFilter = "created"
ProjectFilterFollowed ProjectFilter = "followed"
ProjectFilterSupported ProjectFilter = "supported"
ProjectFilterAll ProjectFilter = ""
)
// GetProjects returns ClientAPI user's projects.
// Supported string filters: "created", "followed", "supported", "" (no filter)
func (c *Client) GetProjects(userID int, filter ProjectFilter) ([]*Project, error) {
userIDStr := strconv.Itoa(userID)
resp := &ListProjectResponse{}
err := c.apiget("/users/"+userIDStr+"/projects?state="+string(filter), resp)
if err != nil {
return nil, err
}
return resp.Projects, nil
}
// GetProject returns one specific ClientAPI user's
// project identified by its Id or Slug.
func (c *Client) GetProject(projectID int) (*Project, error) {
projectIDStr := strconv.Itoa(projectID)
project := &Project{}
err := c.apiget("/projects/"+projectIDStr, project)
if err != nil {
return nil, err
}
return project, nil
}
// GetProjectSupporters lists supporters for a project
// limit and offset stand for pagination
// the boolean returns indicates if it was the last
// page of supporters or not.
func (c *Client) GetProjectSupporters(projectID, limit, offset int) ([]*User, error, bool) {
projectIDStr := strconv.Itoa(projectID)
limitStr := strconv.Itoa(limit)
offsetStr := strconv.Itoa(offset)
supporters := &ListSupporterResponse{}
err := c.apiget("/projects/"+projectIDStr+"/supporters?limit="+limitStr+"&offset="+offsetStr, supporters)
if err != nil {
return nil, err, false
}
return supporters.Supporters, nil, supporters.Meta.Next == ""
}
// GetProjectOrders lists orders for a project
// limit and offset stand for pagination
// the boolean returns indicates if it was the last
// page or not.
func (c *Client) GetProjectOrders(projectID, limit, offset int) ([]*Order, error, bool) {
projectIDStr := strconv.Itoa(projectID)
limitStr := strconv.Itoa(limit)
offsetStr := strconv.Itoa(offset)
orders := &ListOrderResponse{}
err := c.apiget("/projects/"+projectIDStr+"/orders?limit="+limitStr+"&offset="+offsetStr, orders)
if err != nil {
return nil, err, false
}
return orders.Orders, nil, orders.Meta.Next == ""
}
func (c *Client) GetProjectOrdersJson(projectID, limit, offset int) ([]byte, error) {
projectIDStr := strconv.Itoa(projectID)
limitStr := strconv.Itoa(limit)
offsetStr := strconv.Itoa(offset)
jsonBytes, err := c.apigetJsonBytes("/projects/" + projectIDStr + "/orders?limit=" + limitStr + "&offset=" + offsetStr)
if err != nil {
return nil, err
}
return jsonBytes, nil
}
// GetProjectRewards lists rewards for a project
func (c *Client) GetProjectRewards(projectID, limit, offset int) ([]*Reward, error, bool) {
projectIDStr := strconv.Itoa(projectID)
limitStr := strconv.Itoa(limit)
offsetStr := strconv.Itoa(offset)
rewards := &ListRewardResponse{}
err := c.apiget("/projects/"+projectIDStr+"/rewards?limit="+limitStr+"&offset="+offsetStr, rewards)
if err != nil {
return nil, err, false
}
return rewards.Rewards, nil, true
}