mirror of
https://github.com/anyproto/anytype-heart.git
synced 2025-06-09 09:35:00 +09:00
Merge pull request #2164 from anyproto/go-4790-unable-to-embed-audio-files
GO-4790: Use better mimetype detection library
This commit is contained in:
parent
870f86be87
commit
76d473031b
4 changed files with 13 additions and 20 deletions
|
@ -11,12 +11,13 @@ import (
|
|||
"io/ioutil"
|
||||
"net/http"
|
||||
"os"
|
||||
"path"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/anyproto/any-sync/app"
|
||||
"github.com/h2non/filetype"
|
||||
"github.com/gabriel-vasile/mimetype"
|
||||
|
||||
"github.com/anyproto/anytype-heart/core/block/cache"
|
||||
"github.com/anyproto/anytype-heart/core/block/simple"
|
||||
|
@ -540,12 +541,13 @@ func (u *uploader) getOrCreateFileObject(ctx context.Context, addResult *files.A
|
|||
}
|
||||
|
||||
func (u *uploader) detectType(buf *fileReader) model.BlockContentFileType {
|
||||
b, err := buf.Peek(8192)
|
||||
if err != nil && err != io.EOF {
|
||||
mime, err := mimetype.DetectReader(buf)
|
||||
if err != nil {
|
||||
log.With("error", err).Error("detect MIME")
|
||||
return model.BlockContentFile_File
|
||||
}
|
||||
tp, _ := filetype.Match(b)
|
||||
return file.DetectTypeByMIME(u.name, tp.MIME.Value)
|
||||
mediaType, _ := path.Split(mime.String())
|
||||
return file.DetectTypeByMIME(u.name, mediaType)
|
||||
}
|
||||
|
||||
type FileComponent interface {
|
||||
|
|
|
@ -4,9 +4,8 @@ import (
|
|||
"fmt"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
|
||||
"github.com/h2non/filetype"
|
||||
"github.com/gabriel-vasile/mimetype"
|
||||
)
|
||||
|
||||
type AddOption func(*AddOptions)
|
||||
|
@ -70,13 +69,8 @@ func (s *service) normalizeOptions(opts *AddOptions) error {
|
|||
return fmt.Errorf("failed to seek underlying reader: %w", err)
|
||||
}
|
||||
|
||||
t, err := filetype.Match(data)
|
||||
if err != nil {
|
||||
log.Warnf("filetype failed to match: %s", err)
|
||||
opts.Media = http.DetectContentType(data)
|
||||
} else {
|
||||
opts.Media = t.MIME.Value
|
||||
}
|
||||
mime := mimetype.Detect(data)
|
||||
opts.Media = mime.String()
|
||||
}
|
||||
|
||||
return nil
|
||||
|
|
3
go.mod
3
go.mod
|
@ -29,6 +29,7 @@ require (
|
|||
github.com/dsoprea/go-exif/v3 v3.0.1
|
||||
github.com/dsoprea/go-jpeg-image-structure/v2 v2.0.0-20221012074422-4f3f7e934102
|
||||
github.com/ethereum/go-ethereum v1.13.15
|
||||
github.com/gabriel-vasile/mimetype v1.4.8
|
||||
github.com/gin-gonic/gin v1.10.0
|
||||
github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8
|
||||
github.com/go-chi/chi/v5 v5.2.1
|
||||
|
@ -45,7 +46,6 @@ require (
|
|||
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0
|
||||
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0
|
||||
github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645
|
||||
github.com/h2non/filetype v1.1.3
|
||||
github.com/hashicorp/go-multierror v1.1.1
|
||||
github.com/hashicorp/yamux v0.1.2
|
||||
github.com/hbagdi/go-unsplash v0.0.0-20230414214043-474fc02c9119
|
||||
|
@ -161,7 +161,6 @@ require (
|
|||
github.com/flopp/go-findfont v0.1.0 // indirect
|
||||
github.com/fogleman/gg v1.3.0 // indirect
|
||||
github.com/fsnotify/fsnotify v1.6.0 // indirect
|
||||
github.com/gabriel-vasile/mimetype v1.4.6 // indirect
|
||||
github.com/gammazero/deque v1.0.0 // indirect
|
||||
github.com/gin-contrib/sse v0.1.0 // indirect
|
||||
github.com/go-errors/errors v1.4.2 // indirect
|
||||
|
|
6
go.sum
6
go.sum
|
@ -311,8 +311,8 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo
|
|||
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
||||
github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
|
||||
github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
|
||||
github.com/gabriel-vasile/mimetype v1.4.6 h1:3+PzJTKLkvgjeTbts6msPJt4DixhT4YtFNf1gtGe3zc=
|
||||
github.com/gabriel-vasile/mimetype v1.4.6/go.mod h1:JX1qVKqZd40hUPpAfiNTe0Sne7hdfKSbOqqmkq8GCXc=
|
||||
github.com/gabriel-vasile/mimetype v1.4.8 h1:FfZ3gj38NjllZIeJAmMhr+qKL8Wu+nOoI3GqacKw1NM=
|
||||
github.com/gabriel-vasile/mimetype v1.4.8/go.mod h1:ByKUIKGjh1ODkGM1asKUbQZOLGrPjydw3hYPU2YU9t8=
|
||||
github.com/gammazero/chanqueue v1.0.0 h1:FER/sMailGFA3DDvFooEkipAMU+3c9Bg3bheloPSz6o=
|
||||
github.com/gammazero/chanqueue v1.0.0/go.mod h1:fMwpwEiuUgpab0sH4VHiVcEoji1pSi+EIzeG4TPeKPc=
|
||||
github.com/gammazero/deque v1.0.0 h1:LTmimT8H7bXkkCy6gZX7zNLtkbz4NdS2z8LZuor3j34=
|
||||
|
@ -527,8 +527,6 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgf
|
|||
github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
|
||||
github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 h1:MJG/KsmcqMwFAkh8mTnAwhyKoB+sTAnY4CACC110tbU=
|
||||
github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw=
|
||||
github.com/h2non/filetype v1.1.3 h1:FKkx9QbD7HR/zjK1Ia5XiBsq9zdLi5Kf3zGyFTAFkGg=
|
||||
github.com/h2non/filetype v1.1.3/go.mod h1:319b3zT68BvV+WRj7cwy856M2ehB3HqNOt6sy1HndBY=
|
||||
github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE=
|
||||
github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8=
|
||||
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue