From eb77956dc5d2537718767e21d034e8a8bfb1a13f Mon Sep 17 00:00:00 2001 From: stephen mcquay Date: Sat, 10 Dec 2016 15:41:31 -0800 Subject: [PATCH] use interface, not path --- mov.go | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/mov.go b/mov.go index 88cfa5a..0fa1646 100644 --- a/mov.go +++ b/mov.go @@ -4,24 +4,20 @@ import ( "bytes" "encoding/binary" "errors" - "os" + "io" "time" ) const epochAdjust = 2082844800 // Created attempts to find a created time from the metadata in a .mov file. -func Created(path string) (time.Time, error) { +func Created(file io.ReadSeeker) (time.Time, error) { var r time.Time - f, err := os.Open(path) - if err != nil { - return r, err - } - defer f.Close() + var err error buf := [8]byte{} for { - _, err := f.Read(buf[:]) + _, err := file.Read(buf[:]) if err != nil { return r, err } @@ -29,11 +25,11 @@ func Created(path string) (time.Time, error) { break } else { atomSize := binary.BigEndian.Uint32(buf[:]) - f.Seek(int64(atomSize)-8, 1) + file.Seek(int64(atomSize)-8, 1) } } - _, err = f.Read(buf[:]) + _, err = file.Read(buf[:]) if err != nil { return r, err } @@ -41,10 +37,10 @@ func Created(path string) (time.Time, error) { s := string(buf[4:8]) switch s { case "mvhd": - if _, err := f.Seek(4, 1); err != nil { + if _, err := file.Seek(4, 1); err != nil { return r, err } - _, err = f.Read(buf[:4]) + _, err = file.Read(buf[:4]) if err != nil { return r, err }