imguploader.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. type NopImageUploader struct {
  10. }
  11. func (NopImageUploader) Upload(path string) (string, error) {
  12. return "", nil
  13. }
  14. func NewImageUploader() (ImageUploader, error) {
  15. switch setting.ImageUploadProvider {
  16. case "s3":
  17. s3sec, err := setting.Cfg.GetSection("external_image_storage.s3")
  18. if err != nil {
  19. return nil, err
  20. }
  21. bucket := s3sec.Key("bucket_url").MustString("")
  22. accessKey := s3sec.Key("access_key").MustString("")
  23. secretKey := s3sec.Key("secret_key").MustString("")
  24. if bucket == "" {
  25. return nil, fmt.Errorf("Could not find bucket setting for image.uploader.s3")
  26. }
  27. if accessKey == "" {
  28. return nil, fmt.Errorf("Could not find accessKey setting for image.uploader.s3")
  29. }
  30. if secretKey == "" {
  31. return nil, fmt.Errorf("Could not find secretKey setting for image.uploader.s3")
  32. }
  33. return NewS3Uploader(bucket, accessKey, secretKey), nil
  34. case "webdav":
  35. webdavSec, err := setting.Cfg.GetSection("external_image_storage.webdav")
  36. if err != nil {
  37. return nil, err
  38. }
  39. url := webdavSec.Key("url").String()
  40. if url == "" {
  41. return nil, fmt.Errorf("Could not find url key for image.uploader.webdav")
  42. }
  43. username := webdavSec.Key("username").String()
  44. password := webdavSec.Key("password").String()
  45. return NewWebdavImageUploader(url, username, password)
  46. }
  47. return NopImageUploader{}, nil
  48. }