57 lines
835 B
Go
57 lines
835 B
Go
package internal
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"github.com/creasty/defaults"
|
|
)
|
|
|
|
// Entry ...
|
|
type Entry struct {
|
|
URL string
|
|
Title string
|
|
Author string
|
|
Summary string
|
|
Content string
|
|
HTMLContent string
|
|
Length int
|
|
|
|
hash string
|
|
}
|
|
|
|
func LoadEntry(data []byte) (entry *Entry, err error) {
|
|
entry = &Entry{}
|
|
if err := defaults.Set(entry); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if err = json.Unmarshal(data, &entry); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func (e *Entry) String() string {
|
|
return e.URL
|
|
}
|
|
|
|
func (e *Entry) Hash() string {
|
|
if e.hash != "" {
|
|
return e.hash
|
|
}
|
|
|
|
hash := FastHash(e.String())
|
|
e.hash = hash[len(hash)-URLHashLength:]
|
|
|
|
return e.hash
|
|
}
|
|
|
|
func (e *Entry) Bytes() ([]byte, error) {
|
|
data, err := json.Marshal(e)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return data, nil
|
|
}
|