-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathsaved_objects_553.go
74 lines (62 loc) · 1.91 KB
/
saved_objects_553.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
package kibana
import (
"encoding/json"
"errors"
"fmt"
)
type savedObjectsClient553 struct {
config *Config
client *HttpAgent
version string
}
type savedObjectSearchResponse553 struct {
Hits savedObjectSearchResponseHits553 `json:"hits"`
}
type savedObjectSearchResponseHits553 struct {
Total int `json:"total"`
Hits []savedObjectSearchResponseHit553 `json:"hits"`
}
type savedObjectSearchResponseHit553 struct {
Id string `json:"_id"`
Type string `json:"_type"`
Source map[string]interface{} `json:"_source"`
}
func (api *savedObjectsClient553) GetByType(request *SavedObjectRequest) (*SavedObjectResponse, error) {
address := api.config.BuildFullPath("/%s/_search?size=%d", request.Type, request.PerPage)
apiResponse, body, errs := api.client.
Post(address).
Set("kbn-version", api.config.KibanaVersion).
Send(`{"query":{"match_all":{}}}`).
End()
if errs != nil {
return nil, fmt.Errorf("could not get saved objects, error: %v", errs)
}
if apiResponse.StatusCode >= 300 {
return nil, errors.New(fmt.Sprintf("Status: %d, %s", apiResponse.StatusCode, body))
}
response := &savedObjectSearchResponse553{}
err := json.Unmarshal([]byte(body), response)
if err != nil {
return nil, fmt.Errorf("could not parse saved objects response, error: %v, response body: %s", err, body)
}
var savedObjects []*SavedObject
for _, item := range response.Hits.Hits {
objectVersion := version("1")
if val, ok := item.Source["version"]; ok {
objectVersion = val.(version)
}
savedObjects = append(savedObjects, &SavedObject{
Type: item.Type,
Id: item.Id,
Version: objectVersion,
Attributes: item.Source,
})
}
savedObjectResponse := &SavedObjectResponse{
PerPage: request.PerPage,
Page: 1,
Total: response.Hits.Total,
SavedObjects: savedObjects,
}
return savedObjectResponse, nil
}