This repository has been archived by the owner on Sep 2, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
/
folders.go
113 lines (90 loc) · 2.34 KB
/
folders.go
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
105
106
107
108
109
110
111
112
113
package factorial
import (
"encoding/json"
"net/url"
)
const (
folderURL = "/api/v1/folders"
)
// Folder contains all the folder information
type Folder struct {
ID int `json:"id"`
CompanyID int `json:"company_id"`
Name string `json:"name"`
Type string `json:"type"`
Active bool `json:"active"`
CreatedAt string `json:"created_at"`
UpdatedAt string `json:"updated_at"`
}
// CreateFolderRequest keeps the information needed
// for create a new folder
type CreateFolderRequest struct {
Name string `json:"name"`
Active bool `json:"active"`
}
// UpdateFolderRequest keeps the information needed
// for update a folder
type UpdateFolderRequest struct {
Name string `json:"name"`
Active bool `json:"active"`
}
// CreateFolder creates a new folder in your company
func (c Client) CreateFolder(f CreateFolderRequest) (Folder, error) {
var folder Folder
bytes, err := json.Marshal(f)
if err != nil {
return folder, err
}
resp, err := c.post(folderURL, bytes)
if err != nil {
return folder, err
}
if err := json.NewDecoder(resp.Body).Decode(&folder); err != nil {
return folder, err
}
return folder, nil
}
// GetFolder gets all information for the given folderID
func (c Client) GetFolder(id string) (Folder, error) {
var folder Folder
resp, err := c.get(folderURL+"/"+id, nil)
if err != nil {
return folder, err
}
defer resp.Body.Close()
if err := json.NewDecoder(resp.Body).Decode(&folder); err != nil {
return folder, err
}
return folder, nil
}
// ListFolders gets all the folder from you company
// you can filter this list by name and active
func (c Client) ListFolders(filter url.Values) ([]Folder, error) {
var folders []Folder
resp, err := c.get(folderURL, filter)
if err != nil {
return folders, err
}
defer resp.Body.Close()
if err := json.NewDecoder(resp.Body).Decode(&folders); err != nil {
return folders, err
}
return folders, nil
}
// UpdateFolder update the given folder id with the given
// request data
func (c Client) UpdateFolder(id string, f UpdateFolderRequest) (Folder, error) {
var folder Folder
bytes, err := json.Marshal(f)
if err != nil {
return folder, err
}
resp, err := c.put(folderURL+"/"+id, bytes)
if err != nil {
return folder, err
}
if err := json.NewDecoder(resp.Body).Decode(&folder); err != nil {
return folder, err
}
return folder, nil
}