-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconverter.go
More file actions
75 lines (58 loc) · 1.31 KB
/
converter.go
File metadata and controls
75 lines (58 loc) · 1.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package ff
import (
"github.com/gorilla/feeds"
"github.com/mmcdole/gofeed"
)
func convertItem(i *gofeed.Item) *feeds.Item {
if i == nil {
return nil
}
item := &feeds.Item{
Title: i.Title,
Link: &feeds.Link{Href: i.Link},
Description: i.Description,
Id: i.GUID,
Content: i.Content,
}
if i.Author != nil {
item.Author = &feeds.Author{Name: i.Author.Name, Email: i.Author.Email}
}
if i.UpdatedParsed != nil {
item.Updated = *i.UpdatedParsed
}
if i.PublishedParsed != nil {
item.Created = *i.PublishedParsed
}
return item
}
func Convert(f *gofeed.Feed) *feeds.Feed {
if f == nil {
return &feeds.Feed{}
}
feed := &feeds.Feed{
Title: f.Title,
Link: &feeds.Link{Href: f.Link},
Description: f.Description,
Copyright: f.Copyright,
}
if f.Author != nil {
feed.Author = &feeds.Author{Name: f.Author.Name, Email: f.Author.Email}
}
if f.UpdatedParsed != nil {
feed.Updated = *f.UpdatedParsed
}
if f.PublishedParsed != nil {
feed.Created = *f.PublishedParsed
}
if f.Image != nil {
feed.Image = &feeds.Image{Url: f.Image.URL, Title: f.Image.Title}
}
items := make([]*feeds.Item, 0, len(f.Items))
for _, i := range f.Items {
if item := convertItem(i); item != nil {
items = append(items, item)
}
}
feed.Items = items
return feed
}