2013-09-27 17:08:19 +00:00
|
|
|
package gitmedia
|
|
|
|
|
|
|
|
import (
|
|
|
|
"bytes"
|
|
|
|
"io"
|
2014-04-16 21:08:58 +00:00
|
|
|
"regexp"
|
2013-09-27 17:08:19 +00:00
|
|
|
)
|
|
|
|
|
2014-04-16 21:08:58 +00:00
|
|
|
var MediaWarning = []byte("# git-media\n")
|
2013-09-27 17:08:53 +00:00
|
|
|
|
2013-10-04 13:48:02 +00:00
|
|
|
func Encode(writer io.Writer, sha string) (int, error) {
|
|
|
|
written, err := writer.Write(MediaWarning)
|
|
|
|
if err != nil {
|
|
|
|
return written, err
|
|
|
|
}
|
2013-09-27 17:08:19 +00:00
|
|
|
|
2013-11-08 15:20:02 +00:00
|
|
|
written2, err := writer.Write([]byte(sha + "\n"))
|
2013-10-04 13:48:02 +00:00
|
|
|
return written + written2, err
|
2013-09-27 17:08:19 +00:00
|
|
|
}
|
|
|
|
|
2013-10-04 13:48:02 +00:00
|
|
|
func Decode(reader io.Reader) (string, error) {
|
2013-10-14 16:56:43 +00:00
|
|
|
buf := make([]byte, 100)
|
2013-10-04 13:48:02 +00:00
|
|
|
written, err := reader.Read(buf)
|
|
|
|
if err != nil {
|
|
|
|
return "", err
|
|
|
|
}
|
2013-09-27 17:08:19 +00:00
|
|
|
|
2014-04-16 21:08:58 +00:00
|
|
|
lines := bytes.Split(buf[0:written], []byte("\n"))
|
|
|
|
matched, err := regexp.Match("# (.*git-media|external)", lines[0])
|
|
|
|
if err != nil {
|
|
|
|
return "", err
|
|
|
|
}
|
2013-09-27 17:08:19 +00:00
|
|
|
|
2014-04-16 21:08:58 +00:00
|
|
|
if matched {
|
|
|
|
return string(lines[1]), nil
|
2013-10-04 13:48:02 +00:00
|
|
|
}
|
2014-04-16 21:08:58 +00:00
|
|
|
|
|
|
|
return "", nil // error?
|
2013-09-27 17:08:19 +00:00
|
|
|
}
|