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
|
package sls
import "encoding/json"
type Logstore struct {
TTL int `json:"ttl,omitempty"`
Shard int `json:"shardCount,omitempty"`
Name string `json:"logstoreName,omitempty"`
}
func (proj *Project) CreateLogstore(logstore *Logstore) error {
data, err := json.Marshal(logstore)
if err != nil {
return err
}
req := &request{
method: METHOD_POST,
path: "/logstores",
contentType: "application/json",
payload: data,
}
return proj.client.requestWithClose(req)
}
func (proj *Project) GetLogstore(name string) (*Logstore, error) {
req := &request{
method: METHOD_GET,
path: "/logstores/" + name,
}
ls := &Logstore{}
if err := proj.client.requestWithJsonResponse(req, ls); err != nil {
return nil, err
}
return ls, nil
}
func (proj *Project) DeleteLogstore(name string) error {
req := &request{
method: METHOD_DELETE,
path: "/logstores/" + name,
}
return proj.client.requestWithClose(req)
}
func (proj *Project) UpdateLogstore(logstore *Logstore) error {
data, err := json.Marshal(logstore)
if err != nil {
return err
}
req := &request{
method: METHOD_PUT,
path: "/logstores/" + logstore.Name,
contentType: "application/json",
payload: data,
}
return proj.client.requestWithClose(req)
}
type LogstoreList struct {
Count int `json:"count,omitempty"`
Total int `json:"total,omitempty"`
Logstores []string `json:"logstores,omitempty"`
}
func (proj *Project) ListLogstore() (*LogstoreList, error) {
req := &request{
method: METHOD_GET,
path: "/logstores",
}
list := &LogstoreList{}
if err := proj.client.requestWithJsonResponse(req, list); err != nil {
return nil, err
}
return list, nil
}
type shard struct {
Id int `json:"shardID,omitempty"`
}
func (proj *Project) ListShards(logstoreName string) ([]int, error) {
req := &request{
method: METHOD_GET,
path: "/logstores/" + logstoreName + "/shards",
}
var resp []*shard
if err := proj.client.requestWithJsonResponse(req, &resp); err != nil {
return nil, err
}
var shards []int
for _, shard := range resp {
shards = append(shards, shard.Id)
}
return shards, nil
}
|