63 lines
846 B
Go
63 lines
846 B
Go
package testdata
|
|
|
|
import (
|
|
"bytes"
|
|
"embed"
|
|
"io"
|
|
"os"
|
|
"strings"
|
|
)
|
|
|
|
//go:embed *
|
|
var fs embed.FS
|
|
|
|
func FS() mockFS {
|
|
return mockFS{
|
|
FS: fs,
|
|
}
|
|
}
|
|
|
|
type mockFS struct {
|
|
embed.FS
|
|
}
|
|
|
|
type mockMimer struct{ os.FileInfo }
|
|
|
|
func (m *mockMimer) ContentType() string {
|
|
parts := strings.Split(m.Name(), ".")
|
|
|
|
suffix := parts[len(parts)-1]
|
|
|
|
switch suffix {
|
|
case "jpg":
|
|
return "image/jpeg"
|
|
default:
|
|
return ""
|
|
}
|
|
}
|
|
|
|
func (m mockFS) Read(path string) (b []byte, err error) {
|
|
file, err := m.Open(path)
|
|
if err != nil {
|
|
return
|
|
}
|
|
defer file.Close()
|
|
|
|
buff := bytes.NewBuffer(make([]byte, 0, 1024))
|
|
|
|
_, err = io.Copy(buff, file)
|
|
|
|
return buff.Bytes(), err
|
|
}
|
|
|
|
func (m mockFS) Stat(path string) (info os.FileInfo, err error) {
|
|
file, err := m.Open(path)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
info, err = file.Stat()
|
|
info = &mockMimer{info}
|
|
return
|
|
}
|