But, over the last few nights I have been working to add support for HTTP Basic Authentication, which is where your user name and password are send to the server as part of the connection process. This allows using code to access the API by passing a user name and password as part of it's connection process. I have a simple WPF test app that I made which uses RESTSharp to connect to the Blazing Heart Reader API, which now works:
To get this working, I coppied the code for IdentityBasicAuthenticationAttribute.cs and related files, and then just added the attribute to the API controllers:
Easy. Behind the scenes though, this is only possible because I'm using the Owin authentication model which bypasses the server authentication. This is important because the server only allows one type of authentication for the whole application but Owin allows you to use anything you write a filter for. It's a good thing I previously upgraded the site to ASP.NET MVC 4 to use Owin otherwise this would have been quite painful!
Where it's at
Currently, the Blazing Heart Reader is working well enough that I've started to use it to check my feeds. There's a lot more to do before I would consider it usable by other people, but it's a pretty good effort so far.
Not too long ago I rewrote all the HTML using Bootstrap, with custom CSS for the folder list on the left. It wasn't as nice as I was hoping, but it looks pretty nice. I also used Bootstrap "badges" for the unread counts. There are "+" characters in front of folders which you can expand, but that doesn't look very good as yet, and can be a bit confusing. I don't want to complicate the feed list so I am considering only allowing one level of folders, but I might allow more where only one can be open at a time.
The blue boxes next the the feed items are "read" indicators, shamelessly coppied from Microsoft Outlook. I think it works quite well although clicking them still opens the item when it really shouldn't.
There is one major problem with the back-end, and that is detecting updates to feed items. You can see in the above image that there are two items about TEMP environment variables, which have almost (if not exactly) the same content. The problem is that RSS doesn't always have a way to identify the posts and so it's up to the consumer of the feed to figure it out. Obviously that bit needs a bit of work.