| Server IP : 20.75.53.88 / Your IP : 216.73.217.72 [ Web Server : Apache System : Linux VMRALP-3 4.4.0-256-generic #290~14.04.1-Ubuntu SMP Thu Jun 20 09:24:50 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 5.5.9-1ubuntu4.29+esm15 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, Domains : 3 Domains MySQL : ON | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/share/doc/python-twisted-web/examples/ |
Upload File : |
# Copyright (c) Twisted Matrix Laboratories.
# See LICENSE for details.
"""
The example gets RSS feeds from LiveJournal users. It demonstrates how to use
chained Deferred callbacks.
To test the script, rename the file to lj.rpy, and move it to any directory,
let's say /var/www/html/.
Now, start your Twisted web server:
$ twistd -n web --path /var/www/html/
And visit a URL like http://127.0.0.1:8080/lj.rpy?user=foo with a web browser,
replacing "foo" with a valid LiveJournal username.
"""
from twisted.web import resource as resourcelib
from twisted.web import client, microdom, domhelpers, server
urlTemplate = 'http://%s.livejournal.com/data/rss'
class LJSyndicatingResource(resourcelib.Resource):
def render_GET(self, request):
"""
Get an xml feed from LiveJournal and construct a new HTML page using the
'title' and 'link' parsed from the xml document.
"""
url = urlTemplate % request.args['user'][0]
client.getPage(url, timeout=30).addCallback(
microdom.parseString).addCallback(
lambda t: domhelpers.findNodesNamed(t, 'item')).addCallback(
lambda itms: zip([domhelpers.findNodesNamed(x, 'title')[0]
for x in itms],
[domhelpers.findNodesNamed(x, 'link')[0]
for x in itms]
)).addCallback(
lambda itms: '<html><head></head><body><ul>%s</ul></body></html>' %
'\n'.join(
['<li><a href="%s">%s</a></li>' % (
domhelpers.getNodeText(link), domhelpers.getNodeText(title))
for (title, link) in itms])
).addCallback(lambda s: (request.write(s),request.finish())).addErrback(
lambda e: (request.write('Error: %s' % e),request.finish()))
return server.NOT_DONE_YET
resource = LJSyndicatingResource()