-
Notifications
You must be signed in to change notification settings - Fork 2
/
media_parser_type.go
34 lines (27 loc) · 1.03 KB
/
media_parser_type.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
package riimage
import (
"io"
"github.com/dsoprea/go-exif/v3"
)
// MediaContext is an accessor that knows how to extract specific metadata from
// the media.
type MediaContext interface {
// Exif returns the EXIF's root IFD.
Exif() (rootIfd *exif.Ifd, data []byte, err error)
}
// MediaParser prescribes a specific structure for the parser types that are
// imported from other projects. We don't use it directly, but we use this to
// impose structure.
type MediaParser interface {
// Parse parses a stream using an `io.ReadSeeker`. `mc` should *actually* be
// a `ExifContext`.
Parse(r io.ReadSeeker, size int) (mc MediaContext, err error)
// ParseFile parses a stream using a file. `mc` should *actually* be a
// `ExifContext`.
ParseFile(filepath string) (mc MediaContext, err error)
// ParseBytes parses a stream direct from bytes. `mc` should *actually* be
// a `ExifContext`.
ParseBytes(data []byte) (mc MediaContext, err error)
// Parses the data to determine if it's a compatible format.
LooksLikeFormat(data []byte) bool
}