Atom feed reader — cpp-netlib v0.13.0

# Atom feed reader

The next examples show some simple, more practical applications using the HTTP client. The first one reads a simple Atom feed and prints the titles of each entry to the console.

## The code

    #include "atom.hpp"
    #include <boost/network/protocol/http/client.hpp>
    #include <boost/foreach.hpp>
    #include <iostream>

    int main(int argc, char * argv[]) {
        using namespace boost::network;

        if (argc != 2) {
            std::cout << "Usage: " << argv[0] << " <url>" << std::endl;
            return 1;
        }

        try {
            http::client client;
            http::client::request request(argv[1]);
            request << header("Connection", "close");
            http::client::response response = client.get(request);
            atom::feed feed(response);

            std::cout << "Feed: " << feed.title()
                      << " (" << feed.subtitle() << ")" << std::endl;
            BOOST_FOREACH(const atom::entry &entry, feed) {
                std::cout << entry.title()
                          << " (" << entry.published() << ")" << std::endl;
            }
        }
        catch (std::exception &e) {
            std::cerr << e.what() << std::endl;
        }

        return 0;
    }

## Building and running `atom_reader`

    $ cd ~/cpp-netlib-build
    $ make atom_reader

And to run the example from the command line to access the feed that lists of all the commits on cpp-netlib’s master branch:

    $ ./example/atom_reader https://github.com/cpp-netlib/cpp-netlib/commits/master.atom

## Diving into the code

Most of this will now be familiar. The response is passed to the constructor to the `atom::feed` class, which parses the resultant XML. To keep this example as simple as possible, rapidxml, a header-only XML parser library, was used to parse the response.

A similar example using RSS feeds exists in `libs/network/example/rss`.