├── .gitignore ├── internal └── rssole │ ├── libs │ ├── bootstrap-icons.woff │ ├── bootstrap-icons.woff2 │ ├── favicon.svg │ ├── htmx.min.js │ └── bootstrap.min.js │ ├── templates │ ├── components │ │ ├── spinner.go.html │ │ ├── itemline.go.html │ │ └── feedline.go.html │ ├── settings.go.html │ ├── feedlist.go.html │ ├── item.go.html │ ├── base.go.html │ ├── items.go.html │ └── crudfeed.go.html │ ├── lastmodified.go │ ├── scrape_test.go │ ├── isread_test.go │ ├── scrape.go │ ├── isread.go │ ├── rssole.go │ ├── feeds.go │ ├── feeds_test.go │ ├── item_test.go │ ├── feed_test.go │ ├── item.go │ ├── feed.go │ ├── endpoints.go │ └── endpoints_test.go ├── .github ├── dependabot.yml └── workflows │ ├── build.yml │ └── release.yml ├── CONTRIBUTING.md ├── .golangci.yaml ├── go.mod ├── badge.svg ├── badge.svg.template ├── LICENSE ├── Makefile ├── .goreleaser.yaml ├── cmd └── rssole │ └── main.go ├── rssole.json ├── README.md └── go.sum /.gitignore: -------------------------------------------------------------------------------- 1 | /rssole 2 | /rssole_readcache.json 3 | /cover.out 4 | /cover.html 5 | 6 | dist/ 7 | -------------------------------------------------------------------------------- /internal/rssole/libs/bootstrap-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheMightyGit/rssole/HEAD/internal/rssole/libs/bootstrap-icons.woff -------------------------------------------------------------------------------- /internal/rssole/libs/bootstrap-icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheMightyGit/rssole/HEAD/internal/rssole/libs/bootstrap-icons.woff2 -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "gomod" 4 | directory: "/" 5 | schedule: 6 | interval: "weekly" 7 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | Please chat to me first before working on any big PRs. This project has very limited scope and I'm unlikely to accept anything that overreaches. 2 | -------------------------------------------------------------------------------- /internal/rssole/templates/components/spinner.go.html: -------------------------------------------------------------------------------- 1 | {{define "components/spinner"}} 2 |
Title 1
16 | Title 1 17 |Title 2
20 | Title 2 21 |Title 3
32 | Title 3 33 |
66 |
68 |
69 | `,
70 | },
71 | }
72 | expectedHTML := `
130 | `,
131 | },
132 | }
133 |
134 | images := w.Images()
135 |
136 | fmt.Println(images)
137 |
138 | if len(images) != 1 {
139 | t.Error("expected image list to be 1 as it should not be de-duped")
140 | }
141 | }
142 |
143 | func TestImages_MastodonExtensionImages(t *testing.T) {
144 | w := wrappedItem{
145 | Item: &gofeed.Item{
146 | Extensions: map[string]map[string][]ext.Extension{
147 | "media": {
148 | "content": {
149 | {
150 | Attrs: map[string]string{
151 | "medium": "image",
152 | "url": "image_url_1",
153 | },
154 | },
155 | {
156 | Attrs: map[string]string{
157 | "medium": "image",
158 | "url": "image_url_2",
159 | },
160 | },
161 | },
162 | },
163 | },
164 | },
165 | }
166 |
167 | images := w.Images()
168 |
169 | if len(images) != 2 {
170 | t.Error("expected image list to be 2")
171 | }
172 | }
173 |
--------------------------------------------------------------------------------
/internal/rssole/templates/crudfeed.go.html:
--------------------------------------------------------------------------------
1 |
14 |
15 | {{.RecentLogs}}
101 | Title 1
116 | Title 1 117 |Title 2
120 | Title 2 121 |