ref: df4ccb956a6718407ddb1592677bebff36b83994
matrix/media.go
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
package matrix import ( "context" "errors" "fmt" "io" "io/fs" "os" "github.com/gabriel-vasile/mimetype" "maunium.net/go/mautrix" "maunium.net/go/mautrix/appservice" "maunium.net/go/mautrix/id" ) func uploadImage(intent *appservice.IntentAPI, path string) (id.ContentURI, error) { info, err := os.Stat(path) if errors.Is(err, fs.ErrNotExist) { return id.ContentURI{}, nil } f, err := os.Open(path) if err != nil { return id.ContentURI{}, fmt.Errorf("while opening file: %w", err) } defer f.Close() mime, err := mimetype.DetectReader(f) if err != nil { return id.ContentURI{}, fmt.Errorf("while detecting mime: %w", err) } f.Seek(0, io.SeekStart) response, err := intent.UploadMedia(context.Background(), mautrix.ReqUploadMedia{ Content: f, ContentLength: info.Size(), ContentType: mime.String(), }) return response.ContentURI, err } |