1
0
dwelling-home/pkg/article/article.go

42 lines
824 B
Go
Raw Normal View History

2023-02-05 04:41:24 +04:00
package article
import (
"bytes"
"errors"
"strconv"
2023-02-05 04:41:24 +04:00
"time"
)
type Article struct {
ID int64
2023-02-05 04:41:24 +04:00
Date time.Time
Title string
2023-02-05 04:41:24 +04:00
Description string
Body []byte
}
func New(body, meta []byte) (article *Article, err error) {
article = &Article{Body: body}
err = article.ParseMetadata(meta)
return
}
2023-02-05 04:41:24 +04:00
func (artcl *Article) ParseMetadata(data []byte) error {
lines := bytes.Split(data, []byte{'\n'})
if len(lines) != 4 {
return errors.New("metadata file is not complete. 4 lines (id, title, date(DD MM YYYY), descr) should present")
2023-02-05 04:41:24 +04:00
}
artcl.ID, _ = strconv.ParseInt(string(lines[0]), 10, 64)
artcl.Title = string(lines[1])
date, err := time.Parse("02 01 2006", string(lines[2]))
2023-02-05 04:41:24 +04:00
if err != nil {
return err
}
artcl.Date = date
artcl.Description = string(lines[3])
2023-02-05 04:41:24 +04:00
return nil
}