<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: www code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Sun, 12 Oct 2008 18:29:32 GMT</pubDate>
    <description>DZone Snippets: www code</description>
    <item>
      <title>Pattern Matching based WSGI-enabled URL routing tool.</title>
      <link>http://snippets.dzone.com/posts/show/5620</link>
      <description>Actual version on http://pypi.python.org/pypi/decoroute&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;easy_install decoroute&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;import decoroute&lt;br /&gt;    &lt;br /&gt;app = decoroute.App()&lt;br /&gt;    &lt;br /&gt;def render_response(status = '200 OK', **kw):&lt;br /&gt;    # try your favorite templating engine here&lt;br /&gt;    return status, [('Content-Type', 'text/plain')], [str(kw)]&lt;br /&gt;&lt;br /&gt;def redirect_to(env, endpoint, **kw):&lt;br /&gt;    return '302 FOUND', [('Content-Type', 'text/plain'), \&lt;br /&gt;    ('Location', '%s://%s%s' % (env['wsgi.url_scheme'], env['HTTP_HOST'], \&lt;br /&gt;    env['decoroute.app'].url_for(endpoint, **kw)))], ['']&lt;br /&gt;    &lt;br /&gt;@app.expose('/node', id = '1')&lt;br /&gt;@app.expose('/node/&lt;id:\d+&gt;')&lt;br /&gt;def node(env, id):&lt;br /&gt;    return render_response(id = id)&lt;br /&gt;    &lt;br /&gt;@app.expose('/url_for')&lt;br /&gt;def url_for(env):&lt;br /&gt;    return render_response( \&lt;br /&gt;        url = env['decoroute.app'].url_for(node, id = 666))&lt;br /&gt;    &lt;br /&gt;@app.expose('/302')&lt;br /&gt;def found(env):&lt;br /&gt;    return redirect_to(env, not_found)&lt;br /&gt;    &lt;br /&gt;@app.expose('/404')&lt;br /&gt;def not_found(env):&lt;br /&gt;    raise decoroute.NotFound()&lt;br /&gt;    &lt;br /&gt;@app.not_found()&lt;br /&gt;def not_found_handler(env):&lt;br /&gt;    return render_response('404 NF', url = env['PATH_INFO'])&lt;br /&gt;    &lt;br /&gt;from wsgiref.simple_server import make_server&lt;br /&gt;    &lt;br /&gt;make_server('', 5555, app).serve_forever()&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Complete source &lt; 100 lines of code:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/usr/bin/env python&lt;br /&gt;# vim:ts=4:sw=4:et&lt;br /&gt;# -*- coding: utf-8 -*-&lt;br /&gt;# $Id: decoroute.py,v 6eb37aeee5cd 2008/06/09 07:38:26 vsevolod $&lt;br /&gt;#&lt;br /&gt;# Pattern Matching based WSGI-enabled URL routing tool.&lt;br /&gt;# Actual version on http://pypi.python.org/pypi/decoroute&lt;br /&gt;# (C) 2008 by Vsevolod S. Balashov &lt;vsevolod@balashov.name&gt;&lt;br /&gt;# under terms of GNU LGPL v2.1 http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt&lt;br /&gt;&lt;br /&gt;__author__ = "Vsevolod Balashov"&lt;br /&gt;__email__ = "vsevolod at balashov dot name"&lt;br /&gt;&lt;br /&gt;import re&lt;br /&gt;from sets import ImmutableSet&lt;br /&gt;import wsgistraw&lt;br /&gt;&lt;br /&gt;__all__ = ['NotFound', 'App']&lt;br /&gt;&lt;br /&gt;class NotFound(Exception):&lt;br /&gt;    pass&lt;br /&gt;&lt;br /&gt;_pattern_re = re.compile(r'''&lt;br /&gt;    ([^&lt;]+)                     # static rule data&lt;br /&gt;    (?:&lt;&lt;br /&gt;        ([a-zA-Z][a-zA-Z0-9_]*) # variable name&lt;br /&gt;        \:&lt;br /&gt;        ([^&gt;]+)                 # regexp constraint&lt;br /&gt;    &gt;)?&lt;br /&gt;''', re.VERBOSE)&lt;br /&gt;&lt;br /&gt;def pattern2regexp(pattern, f, s = lambda x: re.escape(x)):&lt;br /&gt;    def parser():&lt;br /&gt;        for t in _pattern_re.findall(pattern):&lt;br /&gt;            yield s(t[0])&lt;br /&gt;            if t[1] != '':&lt;br /&gt;                yield f(t[1], t[2])&lt;br /&gt;    return parser()&lt;br /&gt;&lt;br /&gt;make_url_for = lambda p: ''.join(pattern2regexp(p, lambda v, r: '%%(%s)s' % v, lambda s: s))&lt;br /&gt;make_variables = lambda p: filter(lambda x: x, pattern2regexp(p, lambda v, r: v, lambda s: None))&lt;br /&gt;make_pattern = lambda p: r''.join(pattern2regexp(p, lambda v, r: r'(?P&lt;%s&gt;%s)' % (v, r)))&lt;br /&gt;make_selector_fragment = lambda p: r''.join(pattern2regexp(p, lambda v, r: r'(?:%s)' % r))&lt;br /&gt;make_selector = lambda i: re.compile(r'(^%s$)' % r'$)|(^'.join(map(make_selector_fragment, i)))&lt;br /&gt;&lt;br /&gt;class UrlMap(object):&lt;br /&gt;    def __init__(self):&lt;br /&gt;        self._endpoints = {}&lt;br /&gt;        self._patterns = {}&lt;br /&gt;        self._pattern_selector = make_selector(self._patterns.iterkeys())&lt;br /&gt;    &lt;br /&gt;    def add(self, pattern, endpoint, **kw):&lt;br /&gt;        if self._patterns.has_key(pattern):&lt;br /&gt;            raise Exception('duplicate pattern', pattern)&lt;br /&gt;        self._endpoints[(endpoint, ImmutableSet(make_variables(pattern)))] = make_url_for(pattern)&lt;br /&gt;        self._patterns[pattern] = (re.compile(make_pattern(pattern)), endpoint, kw)&lt;br /&gt;        self._pattern_selector = make_selector(self._patterns.iterkeys())&lt;br /&gt;    &lt;br /&gt;    def route(self, url):&lt;br /&gt;        try:&lt;br /&gt;            p = self._patterns.values()[re.match(self._pattern_selector, url).lastindex - 1]&lt;br /&gt;            d = re.match(p[0], url).groupdict().copy()&lt;br /&gt;            d.update(p[2])&lt;br /&gt;            return p[1], d&lt;br /&gt;        except:&lt;br /&gt;            raise NotFound('route not found', url)&lt;br /&gt;    &lt;br /&gt;    def url_for(self, endpoint, **kw):&lt;br /&gt;        return self._endpoints[(endpoint, ImmutableSet(kw.keys()))] % kw&lt;br /&gt;&lt;br /&gt;class App(object):&lt;br /&gt;    def __init__(self, key = 'decoroute.app'):&lt;br /&gt;        self._key = key&lt;br /&gt;        self._map = UrlMap()&lt;br /&gt;        self._not_found = lambda e: ('404 NOT FOUND', [("Content-Type", "text/plain")], [''])&lt;br /&gt;    &lt;br /&gt;    @wsgistraw.app&lt;br /&gt;    def __call__(self, env):&lt;br /&gt;        try:&lt;br /&gt;            env[self._key] = self&lt;br /&gt;            endpoint, kw = self._map.route(env['PATH_INFO'])&lt;br /&gt;            return endpoint(env, **kw)&lt;br /&gt;        except NotFound:&lt;br /&gt;            return self._not_found(env)&lt;br /&gt;    &lt;br /&gt;    def expose(self, pattern, **kw):&lt;br /&gt;        def decorate(f):&lt;br /&gt;            self._map.add(pattern, f, **kw)&lt;br /&gt;            return f&lt;br /&gt;        return decorate&lt;br /&gt;    &lt;br /&gt;    def not_found(self):&lt;br /&gt;        def decorate(f):&lt;br /&gt;            self._not_found = f&lt;br /&gt;            return f&lt;br /&gt;        return decorate&lt;br /&gt;    &lt;br /&gt;    def url_for(self, endpoint, **kw):&lt;br /&gt;        return self._map.url_for(endpoint, **kw)&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Mon, 09 Jun 2008 07:10:57 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5620</guid>
      <author>sevkin (Vsevolod Balashov)</author>
    </item>
    <item>
      <title>nowww!</title>
      <link>http://snippets.dzone.com/posts/show/3188</link>
      <description>set redirect from www.example.com to example.com for nginx web server&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;server {&lt;br /&gt;    listen       80;&lt;br /&gt;    server_name  example.com www.example.com;&lt;br /&gt;    if ( $host = www.example.com ) {&lt;br /&gt;        rewrite ^\/(.*)$ http://example.com/$1 permanent;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    .....&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Thu, 21 Dec 2006 17:57:57 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3188</guid>
      <author>sevkin (Vsevolod Balashov)</author>
    </item>
    <item>
      <title>Perl - send form POST</title>
      <link>http://snippets.dzone.com/posts/show/3163</link>
      <description>// Manda le informazioni per il login ad un determinato sito&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;use HTTP::Request::Common qw(POST);&lt;br /&gt;use LWP::UserAgent;&lt;br /&gt;&lt;br /&gt;my $user = "user";&lt;br /&gt;my $pass = "pass";&lt;br /&gt;&lt;br /&gt;my $browser = LWP::UserAgent-&gt;new();&lt;br /&gt;&lt;br /&gt;my $responde = HTTP::Request-&gt;new(POST =&gt; "http://www.sito.com/index.php");&lt;br /&gt;$responde-&gt;content_type("application/x-www-form-urlencoded");&lt;br /&gt;$responde-&gt;content("user=" . $user . "&amp;pass=" . $pass);&lt;br /&gt;&lt;br /&gt;$browser-&gt;request($responde)-&gt;as_string&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Mon, 18 Dec 2006 23:57:55 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3163</guid>
      <author>whitetiger ()</author>
    </item>
    <item>
      <title>Python - getFile Internet</title>
      <link>http://snippets.dzone.com/posts/show/2746</link>
      <description>// Scaricare un file dalla rete&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;package get.file.example;&lt;br /&gt;&lt;br /&gt;import java.io.BufferedInputStream;&lt;br /&gt;import java.io.FileOutputStream;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import java.net.MalformedURLException;&lt;br /&gt;import java.net.URL;&lt;br /&gt;&lt;br /&gt;public class GetFileExample&lt;br /&gt;{&lt;br /&gt;	public GetFileExample()&lt;br /&gt;	{&lt;br /&gt;		try&lt;br /&gt;		{&lt;br /&gt;			byte[] bite = new byte[2048];&lt;br /&gt;			int read;&lt;br /&gt;			URL url = new URL("http://switch.dl.sourceforge.net/sourceforge/pys60miniapps/FlickrS60_src_v0.1b.tar.bz2");&lt;br /&gt;			&lt;br /&gt;			BufferedInputStream bis = new BufferedInputStream(url.openStream());&lt;br /&gt;			FileOutputStream fos = new FileOutputStream("/tmp/file.tar.bz2");&lt;br /&gt;			&lt;br /&gt;			while((read = bis.read(bite))&gt;0)&lt;br /&gt;			{&lt;br /&gt;				fos.write(bite, 0, read);&lt;br /&gt;				System.out.println("--");&lt;br /&gt;			}&lt;br /&gt;			&lt;br /&gt;			fos.close();&lt;br /&gt;			bis.close();&lt;br /&gt;			&lt;br /&gt;			System.out.println("FINE");&lt;br /&gt;			&lt;br /&gt;		}&lt;br /&gt;		catch(MalformedURLException e)&lt;br /&gt;		{&lt;br /&gt;			e.printStackTrace();&lt;br /&gt;		}&lt;br /&gt;		catch(IOException e)&lt;br /&gt;		{&lt;br /&gt;			e.printStackTrace();&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	public static void main(String[] args)&lt;br /&gt;	{&lt;br /&gt;		new GetFileExample();&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Sat, 30 Sep 2006 22:35:20 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2746</guid>
      <author>whitetiger ()</author>
    </item>
  </channel>
</rss>
