-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathatom_reader.html
182 lines (165 loc) · 12 KB
/
atom_reader.html
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Atom feed reader — cpp-netlib v0.10.0</title>
<link rel="stylesheet" href="../../_static/pyramid.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '0.10.0',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<link rel="top" title="cpp-netlib v0.10.0" href="../../index.html" />
<link rel="up" title="Examples" href="../../examples.html" />
<link rel="next" title="Twitter search" href="twitter_search.html" />
<link rel="prev" title="“Hello world” HTTP client" href="hello_world_client.html" />
<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Neuton&subset=latin" type="text/css" media="screen" charset="utf-8" />
<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Nobile:regular,italic,bold,bolditalic&subset=latin" type="text/css" media="screen" charset="utf-8" />
<!--[if lte IE 6]>
<link rel="stylesheet" href="../../_static/ie6.css" type="text/css" media="screen" charset="utf-8" />
<![endif]-->
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="twitter_search.html" title="Twitter search"
accesskey="N">next</a></li>
<li class="right" >
<a href="hello_world_client.html" title="“Hello world” HTTP client"
accesskey="P">previous</a> |</li>
<li><a href="../../contents.html">cpp-netlib v0.10.0</a> »</li>
<li><a href="../../examples.html" accesskey="U">Examples</a> »</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="atom-feed-reader">
<span id="atom-reader"></span><h1>Atom feed reader<a class="headerlink" href="#atom-feed-reader" title="Permalink to this headline">¶</a></h1>
<p>The next examples show some simple, more practical applications using
the HTTP client. The first one reads a simple <a class="reference external" href="http://en.wikipedia.org/wiki/Atom_(standard)">Atom</a> feed and prints
the titles of each entry to the console.</p>
<div class="section" id="the-code">
<h2>The code<a class="headerlink" href="#the-code" title="Permalink to this headline">¶</a></h2>
<div class="highlight-c++"><div class="highlight"><pre><span class="cp">#include "atom.hpp"</span>
<span class="cp">#include <boost/network/protocol/http/client.hpp></span>
<span class="cp">#include <boost/foreach.hpp></span>
<span class="cp">#include <iostream></span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span> <span class="n">argv</span><span class="p">[])</span> <span class="p">{</span>
<span class="k">using</span> <span class="k">namespace</span> <span class="n">boost</span><span class="o">::</span><span class="n">network</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">!=</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
<span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o"><<</span> <span class="s">"Usage: "</span> <span class="o"><<</span> <span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o"><<</span> <span class="s">" <url>"</span> <span class="o"><<</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
<span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span>
<span class="n">try</span> <span class="p">{</span>
<span class="n">http</span><span class="o">::</span><span class="n">client</span> <span class="n">client</span><span class="p">;</span>
<span class="n">http</span><span class="o">::</span><span class="n">client</span><span class="o">::</span><span class="n">request</span> <span class="n">request</span><span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span>
<span class="n">request</span> <span class="o"><<</span> <span class="n">header</span><span class="p">(</span><span class="s">"Connection"</span><span class="p">,</span> <span class="s">"close"</span><span class="p">);</span>
<span class="n">http</span><span class="o">::</span><span class="n">client</span><span class="o">::</span><span class="n">response</span> <span class="n">response</span> <span class="o">=</span> <span class="n">client</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="n">request</span><span class="p">);</span>
<span class="n">atom</span><span class="o">::</span><span class="n">feed</span> <span class="n">feed</span><span class="p">(</span><span class="n">response</span><span class="p">);</span>
<span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o"><<</span> <span class="s">"Feed: "</span> <span class="o"><<</span> <span class="n">feed</span><span class="p">.</span><span class="n">title</span><span class="p">()</span>
<span class="o"><<</span> <span class="s">" ("</span> <span class="o"><<</span> <span class="n">feed</span><span class="p">.</span><span class="n">subtitle</span><span class="p">()</span> <span class="o"><<</span> <span class="s">")"</span> <span class="o"><<</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
<span class="n">BOOST_FOREACH</span><span class="p">(</span><span class="k">const</span> <span class="n">atom</span><span class="o">::</span><span class="n">entry</span> <span class="o">&</span><span class="n">entry</span><span class="p">,</span> <span class="n">feed</span><span class="p">)</span> <span class="p">{</span>
<span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o"><<</span> <span class="n">entry</span><span class="p">.</span><span class="n">title</span><span class="p">()</span>
<span class="o"><<</span> <span class="s">" ("</span> <span class="o"><<</span> <span class="n">entry</span><span class="p">.</span><span class="n">published</span><span class="p">()</span> <span class="o"><<</span> <span class="s">")"</span> <span class="o"><<</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">catch</span> <span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">exception</span> <span class="o">&</span><span class="n">e</span><span class="p">)</span> <span class="p">{</span>
<span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o"><<</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o"><<</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
</pre></div>
</div>
</div>
<div class="section" id="building-and-running-atom-reader">
<h2>Building and running <tt class="docutils literal"><span class="pre">atom_reader</span></tt><a class="headerlink" href="#building-and-running-atom-reader" title="Permalink to this headline">¶</a></h2>
<div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span><span class="nb">cd</span> ~/cpp-netlib-build
<span class="nv">$ </span>make atom_reader
</pre></div>
</div>
<p>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:</p>
<div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>./example/atom_reader https://github.com/cpp-netlib/cpp-netlib/commits/master.atom
</pre></div>
</div>
</div>
<div class="section" id="diving-into-the-code">
<h2>Diving into the code<a class="headerlink" href="#diving-into-the-code" title="Permalink to this headline">¶</a></h2>
<p>Most of this will now be familiar. The response is passed to the
constructor to the <tt class="docutils literal"><span class="pre">atom::feed</span></tt> class, which parses the resultant
XML. To keep this example as simple as possible, <a class="reference external" href="http://rapidxml.sourceforge.net/">rapidxml</a>, a
header-only XML parser library, was used to parse the response.</p>
<p>A similar example using RSS feeds exists in
<tt class="docutils literal"><span class="pre">libs/network/example/rss</span></tt>.</p>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h3><a href="../../contents.html">Table Of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">Atom feed reader</a><ul>
<li><a class="reference internal" href="#the-code">The code</a></li>
<li><a class="reference internal" href="#building-and-running-atom-reader">Building and running <tt class="docutils literal"><span class="pre">atom_reader</span></tt></a></li>
<li><a class="reference internal" href="#diving-into-the-code">Diving into the code</a></li>
</ul>
</li>
</ul>
<h4>Previous topic</h4>
<p class="topless"><a href="hello_world_client.html"
title="previous chapter">“Hello world” HTTP client</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="twitter_search.html"
title="next chapter">Twitter search</a></p>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="twitter_search.html" title="Twitter search"
>next</a></li>
<li class="right" >
<a href="hello_world_client.html" title="“Hello world” HTTP client"
>previous</a> |</li>
<li><a href="../../contents.html">cpp-netlib v0.10.0</a> »</li>
<li><a href="../../examples.html" >Examples</a> »</li>
</ul>
</div>
<div class="footer">
© Copyright 2008-2013, Glyn Matthews, Dean Michael Berris; 2013 Google, Inc..
Last updated on Jul 05, 2013.
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1.
</div>
</body>
</html>