imguploader.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package imguploader
  2. import (
  3. "fmt"
  4. "github.com/grafana/grafana/pkg/setting"
  5. )
  6. type ImageUploader interface {
  7. Upload(path string) (string, error)
  8. }
  9. func NewImageUploader() (ImageUploader, error) {
  10. switch setting.ImageUploadProvider {
  11. case "s3":
  12. s3sec, err := setting.Cfg.GetSection("external_image_storage.s3")
  13. if err != nil {
  14. return nil, err
  15. }
  16. bucket := s3sec.Key("secret_key").String()
  17. accessKey := s3sec.Key("access_key").String()
  18. secretKey := s3sec.Key("secret_key").String()
  19. if bucket == "" {
  20. return nil, fmt.Errorf("Could not find bucket setting for image.uploader.s3")
  21. }
  22. if accessKey == "" {
  23. return nil, fmt.Errorf("Could not find accessKey setting for image.uploader.s3")
  24. }
  25. if secretKey == "" {
  26. return nil, fmt.Errorf("Could not find secretKey setting for image.uploader.s3")
  27. }
  28. return NewS3Uploader(bucket, accessKey, secretKey), nil
  29. case "webdav":
  30. webdavSec, err := setting.Cfg.GetSection("external_image_storage.webdav")
  31. if err != nil {
  32. return nil, err
  33. }
  34. url := webdavSec.Key("url").String()
  35. if url == "" {
  36. return nil, fmt.Errorf("Could not find url key for image.uploader.webdav")
  37. }
  38. username := webdavSec.Key("username").String()
  39. password := webdavSec.Key("password").String()
  40. return NewWebdavImageUploader(url, username, password)
  41. }
  42. return nil, fmt.Errorf("could not find specified provider")
  43. }