avatar.go 720 B

12345678910111213141516171819202122232425262728293031
  1. package main
  2. import (
  3. "fmt"
  4. "io"
  5. "net/http"
  6. "maunium.net/go/mautrix/appservice"
  7. "maunium.net/go/mautrix/id"
  8. )
  9. func uploadAvatar(intent *appservice.IntentAPI, url string) (id.ContentURI, error) {
  10. getResp, err := http.DefaultClient.Get(url)
  11. if err != nil {
  12. return id.ContentURI{}, fmt.Errorf("failed to download avatar: %w", err)
  13. }
  14. data, err := io.ReadAll(getResp.Body)
  15. getResp.Body.Close()
  16. if err != nil {
  17. return id.ContentURI{}, fmt.Errorf("failed to read avatar data: %w", err)
  18. }
  19. mime := http.DetectContentType(data)
  20. resp, err := intent.UploadBytes(data, mime)
  21. if err != nil {
  22. return id.ContentURI{}, fmt.Errorf("failed to upload avatar to Matrix: %w", err)
  23. }
  24. return resp.ContentURI, nil
  25. }