Skip to content
This repository was archived by the owner on Mar 17, 2021. It is now read-only.

Commit 8f0b4f8

Browse files
author
Gordon Irving
committed
expose uid and id on folder, add NewDashboard method to accept folderId
1 parent aaaf590 commit 8f0b4f8

File tree

3 files changed

+54
-23
lines changed

3 files changed

+54
-23
lines changed

dashboard.go

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,20 @@ type DashboardMeta struct {
1515

1616
type DashboardSaveResponse struct {
1717
Slug string `json:"slug"`
18+
Id int64 `json:"id"`
19+
Uid string `json:"uid"`
1820
Status string `json:"status"`
1921
Version int64 `json:"version"`
2022
}
2123

2224
type Dashboard struct {
23-
Meta DashboardMeta `json:"meta"`
24-
Model map[string]interface{} `json:"dashboard"`
25+
Meta DashboardMeta `json:"meta"`
26+
Model map[string]interface{} `json:"dashboard"`
27+
Folder int64 `json:"folderId"`
28+
Overwrite bool `json:overwrite`
2529
}
2630

31+
// Deprecated: use NewDashboard instead
2732
func (c *Client) SaveDashboard(model map[string]interface{}, overwrite bool) (*DashboardSaveResponse, error) {
2833
wrapper := map[string]interface{}{
2934
"dashboard": model,
@@ -38,6 +43,35 @@ func (c *Client) SaveDashboard(model map[string]interface{}, overwrite bool) (*D
3843
return nil, err
3944
}
4045

46+
resp, err := c.Do(req)
47+
if err != nil {
48+
return nil, err
49+
}
50+
if resp.StatusCode != 200 {
51+
data, _ = ioutil.ReadAll(resp.Body)
52+
return nil, fmt.Errorf("status: %d, body: %s", resp.StatusCode, data)
53+
}
54+
55+
data, err = ioutil.ReadAll(resp.Body)
56+
if err != nil {
57+
return nil, err
58+
}
59+
60+
result := &DashboardSaveResponse{}
61+
err = json.Unmarshal(data, &result)
62+
return result, err
63+
}
64+
65+
func (c *Client) NewDashboard(dashboard Dashboard) (*DashboardSaveResponse, error) {
66+
data, err := json.Marshal(dashboard)
67+
if err != nil {
68+
return nil, err
69+
}
70+
req, err := c.newRequest("POST", "/api/dashboards/db", nil, bytes.NewBuffer(data))
71+
if err != nil {
72+
return nil, err
73+
}
74+
4175
resp, err := c.Do(req)
4276
if err != nil {
4377
return nil, err

folder.go

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010

1111
type Folder struct {
1212
Id int64 `json:"id"`
13+
Uid string `json:"uid"`
1314
Title string `json:"title"`
1415
}
1516

@@ -56,44 +57,40 @@ func (c *Client) Folder(id int64) (Folder, error) {
5657
return folder, err
5758
}
5859

59-
func (c *Client) NewFolder(name string) (int64, error) {
60+
func (c *Client) NewFolder(title string) (Folder, error) {
61+
folder := Folder{}
6062
dataMap := map[string]string{
61-
"name": name,
63+
"title": title,
6264
}
6365
data, err := json.Marshal(dataMap)
64-
id := int64(0)
6566
req, err := c.newRequest("POST", "/api/folders", nil, bytes.NewBuffer(data))
6667
if err != nil {
67-
return id, err
68+
return folder, err
6869
}
6970
resp, err := c.Do(req)
7071
if err != nil {
71-
return id, err
72+
return folder, err
7273
}
7374
if resp.StatusCode != 200 {
74-
return id, errors.New(resp.Status)
75+
return folder, errors.New(resp.Status)
7576
}
7677
data, err = ioutil.ReadAll(resp.Body)
7778
if err != nil {
78-
return id, err
79+
return folder, err
7980
}
80-
tmp := struct {
81-
Id int64 `json:"id"`
82-
}{}
83-
err = json.Unmarshal(data, &tmp)
81+
err = json.Unmarshal(data, &folder)
8482
if err != nil {
85-
return id, err
83+
return folder, err
8684
}
87-
id = tmp.Id
88-
return id, err
85+
return folder, err
8986
}
9087

91-
func (c *Client) UpdateFolder(id int64, name string) error {
88+
func (c *Client) UpdateFolder(id string, name string) error {
9289
dataMap := map[string]string{
9390
"name": name,
9491
}
9592
data, err := json.Marshal(dataMap)
96-
req, err := c.newRequest("PUT", fmt.Sprintf("/api/folders/%d", id), nil, bytes.NewBuffer(data))
93+
req, err := c.newRequest("PUT", fmt.Sprintf("/api/folders/%s", id), nil, bytes.NewBuffer(data))
9794
if err != nil {
9895
return err
9996
}
@@ -107,8 +104,8 @@ func (c *Client) UpdateFolder(id int64, name string) error {
107104
return err
108105
}
109106

110-
func (c *Client) DeleteFolder(id int64) error {
111-
req, err := c.newRequest("DELETE", fmt.Sprintf("/api/folders/%d", id), nil, nil)
107+
func (c *Client) DeleteFolder(id string) error {
108+
req, err := c.newRequest("DELETE", fmt.Sprintf("/api/folders/%s", id), nil, nil)
112109
if err != nil {
113110
return err
114111
}

folder_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ func TestNewFolder(t *testing.T) {
130130

131131
t.Log(pretty.PrettyFormat(resp))
132132

133-
if resp != 1 {
133+
if resp.Uid != "nErXDvCkzz" {
134134
t.Error("Not correctly parsing returned creation message.")
135135
}
136136
}
@@ -139,7 +139,7 @@ func TestUpdateFolder(t *testing.T) {
139139
server, client := gapiTestTools(200, updatedFolderJSON)
140140
defer server.Close()
141141

142-
err := client.UpdateFolder(int64(1), "test-folder")
142+
err := client.UpdateFolder("nErXDvCkzz", "test-folder")
143143
if err != nil {
144144
t.Error(err)
145145
}
@@ -149,7 +149,7 @@ func TestDeleteFolder(t *testing.T) {
149149
server, client := gapiTestTools(200, deletedFolderJSON)
150150
defer server.Close()
151151

152-
err := client.DeleteFolder(int64(1))
152+
err := client.DeleteFolder("nErXDvCkzz")
153153
if err != nil {
154154
t.Error(err)
155155
}

0 commit comments

Comments
 (0)