I go into more detail in the Wiki but basically, you can just
- Create a
.env
file with your configs (see here) - Create a
feeds.txt
file with some links (see here) cargo run
You should see HTML dumped in your console.
- Email stuff happens in the
email
folder. For an example implementation, you can checksendgrid
. The implementations are aggregated here - Feed parsing happens in the
xml
folder and specifically in themod.rs
file. blog.rs
contains the internal representations of the web feeds.lib.rs
contains most of the "business logic" of the project which is called frommain.rs
that in turn contains some boiler-plate needed to spin the code up both locally and on AWS Lamda.
I based my implementation around the official RSS specification and the Atom Syndication Format, if you find a particular feed that seems to be causing issues there might be an inconsistency on their part (or in my implementation) or it might just be that some of the optional attributes that I consider necessary (a link or a date for example) are not present.
In any case, open an issue and I'll get back to you :)
I'm very new to rust (as in been doing this for 2 weeks now) and that plus the fact that I am overengineering some aspects of the project purely for exploring the language means that there will very likely be a lot of random bugs baked in the project. That said, I have been running the code since day 0 and if I do find any bugs, you will be able to see them here.
I would really like to fix any potential issues that my code might have so make sure to submit bug reports preferably with reproducible examples!
Make sure to detail your desired changes in either an issue or a discussion first, I will try to reply to them, and then you can go ahead and start working on your fork.
The way the whole different feed format is a bit weird so let me explain how that works.
I wrote a pretty lengthy blog post on the project here where I explain most things in depth so feel free to use that as a sort of external documentation if you have questions about some part of the project. If you don't find what you're looking for then make sure to open a discussion and I'll do my best to explain it to you.