forked from dilutedev/doppler
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconfig_logs.go
133 lines (116 loc) · 3.4 KB
/
config_logs.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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
package doppler
import (
"encoding/json"
"net/http"
"strconv"
)
type ConfigLog struct {
ID string `json:"id"` // Unique identifier for the object
Text string `json:"text"` // Text describing the event
HTML string `json:"html"` // HTML describing the event
Diff []ConfigLogDiff `json:"diff,omitempty"`
Rollback bool `json:"rollback"` // Is this config log a rollback of a previous log
User User `json:"user"`
Project string `json:"project"` // Unique identifier for the object
Environment string `json:"environment"` // Unique identifier for the enironment object
Config string `json:"config"` // The config's name
CreatedAt string `json:"created_at"` // Date and time of the object's creation
}
type ConfigLogDiff struct {
Name string `json:"name"`
Added string `json:"added"`
Removed string `json:"removed"`
}
type ConfigLogs struct {
Logs []ConfigLog `json:"logs"`
Page int `json:"page"`
Success bool `json:"success"`
}
type IConfigLog struct {
Log ConfigLog `json:"log"`
Success bool `json:"success"`
}
type RollbackConfigLogParams struct {
Project string `json:"project"` // Unique identifier for the project (project name)
Config string `json:"config"` // Name of the config object
Log string `json:"log"` // Unique identifier for the log object
}
/*
List config logs
- projectName: Unique identifier for the project
- config: Name of the config object
- page: page number
- perPage: Items per page (default: 20)
*/
func (dp *doppler) ListConfigLogs(projectName, config string, page int, perPage *int) (*ConfigLogs, error) {
defaultPerPage := 20
if perPage == nil {
perPage = &defaultPerPage
}
request, err := http.NewRequest(
http.MethodGet,
"/v3/configs/config/logs?project="+projectName+"&config="+config+"&page="+strconv.Itoa(page)+"&per_page="+strconv.Itoa(*perPage),
nil,
)
if err != nil {
return nil, err
}
data := &ConfigLogs{}
body, err := dp.makeApiRequest(request)
if err != nil {
return nil, err
}
err = json.Unmarshal(body, data)
if err != nil {
return nil, err
}
return data, nil
}
/*
Fetch a config log's details
- project: Unique identifier for the project
- config: Name of the config object
- logID: Unique identifier for the log object
*/
func (dp *doppler) RetrieveConfigLog(project, config, logID string) (*IConfigLog, error) {
request, err := http.NewRequest(
http.MethodGet,
"/v3/configs/config/logs/log?project="+project+"&config="+config+"&log="+logID,
nil,
)
if err != nil {
return nil, err
}
body, err := dp.makeApiRequest(request)
if err != nil {
return nil, err
}
data := &IConfigLog{}
err = json.Unmarshal(body, data)
if err != nil {
return nil, err
}
return data, nil
}
/*
- project: Unique identifier for the project
- config: Name of the config object
- logID: Unique identifier for the log object
*/
func (dp *doppler) RollbackConfigLog(project, config, logID string) (*IConfigLog, error) {
request, _ := http.NewRequest(
http.MethodPost,
"/v3/configs/config/logs/log/rollback?project="+project+"&config="+config+"&log="+logID,
nil,
)
body, err := dp.makeApiRequest(request)
if err != nil {
return nil, err
}
data := &IConfigLog{}
err = json.Unmarshal(body, data)
if err != nil {
return nil, err
}
return data, nil
}