diff --git a/internal/diagnostic/screenshot.go b/internal/diagnostic/screenshot.go index 3ccf9b5..b761969 100644 --- a/internal/diagnostic/screenshot.go +++ b/internal/diagnostic/screenshot.go @@ -11,7 +11,9 @@ import ( "houston/internal/diagnostic/repository" "houston/pkg/s3" "image" + "io" "log" + "net/http" "os" "path/filepath" "time" @@ -35,11 +37,39 @@ func TakeScreenshotAndUpload(logger *zap.Logger, repo *repository.Repository, al logger.Info("taking screenshot") fileLinkList := make([]string, 0) for _, links := range grafanaLinks { - takeScreenShot(logger, &fileLinkList, links.EndpointUrl) + takeScreenShotUrl(logger, &fileLinkList, links.EndpointUrl) } return fileLinkList } +func takeScreenShotUrl(logger *zap.Logger, fileList *[]string, url string) { + req, err := http.NewRequest("GET", url, nil) + if err != nil { + logger.Error(err.Error()) + } + token := fmt.Sprintf("Bearer %s", viper.GetString("grafana.token")) + req.Header.Set("Authorization", token) + + resp, err := http.DefaultClient.Do(req) + if err != nil { + logger.Error(err.Error()) + } + id := uuid.New() + if err := os.MkdirAll("images", os.ModePerm); err != nil { + logger.Error(err.Error()) + } + fileName := "images/" + id.String() + ".jpg" + file, err := os.Create(fileName) + if err != nil { + logger.Error(err.Error()) + } + defer file.Close() + _, err = io.Copy(file, resp.Body) + link := upload(logger, fileName) + os.Remove(fileName) + *fileList = append(*fileList, link) +} + func takeScreenShot(logger *zap.Logger, fileList *[]string, url string) { ctx, cancel := chromedp.NewContext(context.Background()) defer cancel()