in pkg/resource.go [39:101]
func (ds *SlsDatasource) getLogstoreList(w http.ResponseWriter, r *http.Request) {
response := map[string]interface{}{
"data": []map[string]interface{}{}, // 定义 data 为一个任意类型的对象数组
"res": nil,
"message": "",
}
config, err := LoadSettings(httpadapter.PluginConfigFromContext(r.Context()))
if err != nil {
response["message"] = err.Error()
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
provider := sls.NewStaticCredentialsProvider(config.AccessKeyId, config.AccessKeySecret, "")
client := sls.CreateNormalInterfaceV2(config.Endpoint, provider)
client.SetUserAgent("grafana-go")
if config.Region != "" {
client.SetAuthVersion(sls.AuthV4)
client.SetRegion(config.Region)
}
body, err := ioutil.ReadAll(r.Body)
if err != nil {
response["message"] = err.Error()
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
// 解析request JSON 数据
var data ListLogstoresData
if err := json.Unmarshal(body, &data); err != nil {
response["message"] = err.Error()
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
log.DefaultLogger.Debug("getBODY", "body", body, "bodyData", data)
project, err := client.GetProject(data.Project)
if err != nil {
response["message"] = err.Error()
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
// 拿当前 Project 的信息
list, err := project.ListLogStoreV2(0, 500, data.TelemetryType)
if err != nil {
response["message"] = err.Error()
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
response["data"] = list
response["res"] = list
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
json.NewEncoder(w).Encode(response)
log.DefaultLogger.Debug("get logstore success.")
}