Metadata-Version: 1.0
Name: shorten
Version: 0.2.0
Summary: A Python library for generating short URLs.
Home-page: https://github.com/tyrannosaur/shorten
Author: Charlie Liban
Author-email: charlie@tyrannosaur.ca
License: MIT License
Download-URL: https://github.com/tyrannosaur/shorten/zipball/master
Description: Create your own URL-shortening functionality. It's gevent-safe, so you can use it
        with Gunicorn and Flask/Django.
        
        For example, you can create your own little shortening API:
        
        ::
        
          # For example, run as:
          # gunicorn -w 4 example:app
        
          import re
          from redis import Redis
          from flask import Flask, request, redirect, url_for, jsonify
          from werkzeug import iri_to_uri
          from shorten import shortener
        
          app = Flask(__name__)
          app_name = 'short.ur'
        
          redis = Redis()
        
          def is_url(string):
             return re.match('http(s){0,1}://.+\..+', string, re.I) is not None
        
          def to_short_token(key):
             return key.split(to_short_key(''), 1)[1]
        
          def to_short_key(token):
             return '{0}:key:{1}'.format(app_name, token)
        
          counter_key = '{0}:counter'.format(app_name)
        
          shortener = shortener('redis', redis=redis, 
                                         counter_key=counter_key, 
                                         formatter=to_short_key)
        
          @app.route('/')
          def shorten():
             try:
                url = request.args['u'].strip()
                if not is_url(url):
                   return jsonify({'error' : 'not a valid url'})
                else:
                   token = to_short_token(shortener.insert(url))
                   return jsonify({'short' : url_for('bounce', token=token)})
             except KeyError, e:
                return jsonify({'error' : 'no url to shorten'})
        
          @app.route('/<token>')
          def bounce(token):
             try:
                token = to_short_key(token)
                return redirect(iri_to_uri(shortener[token]))
             except KeyError:
                return jsonify({'error' : 'no short url found'})
                
          if __name__ == '__main__':
             app.run('0.0.0.0')
        
Keywords: redis,internet
Platform: UNKNOWN
Classifier: Programming Language :: Python
Classifier: License :: OSI Approved :: MIT License
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Page Counters
