blogposts: handle file type
This commit is contained in:
parent
e8b8166ae9
commit
3cdca7cc94
@ -1,9 +1,17 @@
|
|||||||
package blogposts
|
package blogposts
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"io/fs"
|
"io/fs"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var markdownSuffix = map[string]struct{}{
|
||||||
|
"md": {},
|
||||||
|
}
|
||||||
|
|
||||||
|
var ErrUnknownFileType = errors.New("unknown file type, must be markdown")
|
||||||
|
|
||||||
func NewPostsFromFS(fileSystem fs.FS) ([]Post, error) {
|
func NewPostsFromFS(fileSystem fs.FS) ([]Post, error) {
|
||||||
dir, err := fs.ReadDir(fileSystem, ".")
|
dir, err := fs.ReadDir(fileSystem, ".")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -11,7 +19,11 @@ func NewPostsFromFS(fileSystem fs.FS) ([]Post, error) {
|
|||||||
}
|
}
|
||||||
var posts []Post
|
var posts []Post
|
||||||
for _, f := range dir {
|
for _, f := range dir {
|
||||||
post, err := getPost(fileSystem, f.Name())
|
fileName := f.Name()
|
||||||
|
if !isMarkdownFile(fileName) {
|
||||||
|
return nil, ErrUnknownFileType
|
||||||
|
}
|
||||||
|
post, err := getPost(fileSystem, fileName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -19,3 +31,9 @@ func NewPostsFromFS(fileSystem fs.FS) ([]Post, error) {
|
|||||||
}
|
}
|
||||||
return posts, nil
|
return posts, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func isMarkdownFile(fileName string) bool {
|
||||||
|
splitted := strings.Split(fileName, ".")
|
||||||
|
_, ok := markdownSuffix[splitted[len(splitted)-1:][0]]
|
||||||
|
return ok
|
||||||
|
}
|
||||||
|
@ -56,6 +56,17 @@ World`,
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestWrongFile(t *testing.T) {
|
||||||
|
fs := fstest.MapFS{
|
||||||
|
"hello world.txt": {Data: []byte("Yolo")},
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err := NewPostsFromFS(fs)
|
||||||
|
if err == nil {
|
||||||
|
t.Errorf("should be an error but not")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func assertPost(t testing.TB, got Post, want Post) {
|
func assertPost(t testing.TB, got Post, want Post) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
if !reflect.DeepEqual(got, want) {
|
if !reflect.DeepEqual(got, want) {
|
||||||
|
Loading…
Reference in New Issue
Block a user