コード例 #1
0
    def test(self):
        self.assertEqual(validate_url('http://workfor.us'), (True, None))
        self.assertEqual(validate_url('http://app.work4labs.com/jobs?job_id=42'), (True, None))

        self.assertEqual(validate_url('foobar')[0], False)
        self.assertEqual(validate_url('jobs?job_id=42')[0], False)
        self.assertEqual(validate_url('ftp://work4labs.com')[0], False)
        self.assertEqual(validate_url('http://*****:*****@work4labs.com')[0], False)
コード例 #2
0
ファイル: views.py プロジェクト: Work4Labs/django-short-urls
def new(request):
    """Create a new short url based on the POST parameters"""
    long_url = request.GET.get('long_url')

    if long_url is None:
        is_valid, error_message = False, "Missing GET parameter: 'long_url'"
    else:
        is_valid, error_message = validate_url(long_url)

    if not is_valid:
        return pyw4c_response(status=HTTP_BAD_REQUEST, message=error_message)

    params = {}

    for key in ['short_path', 'prefix']:
        params[key] = request.GET.get(key)

        if key == 'prefix' and 'allow_slashes_in_prefix' in request.GET:
            continue

        if params[key] is not None and '/' in params[key]:
            return pyw4c_response(
                status=HTTP_BAD_REQUEST,
                message="%s may not contain a '/' character." % key)

    statsd.increment(
        'workforus.new',
        tags=['prefix:' + unicode(params['prefix']), 'is_secure:' + unicode(request.is_secure())])

    try:
        link = Link.shorten(long_url, **params)

        getLogger('app').info(
            'Successfully shortened %s into %s for user %s',
            link.long_url, link.hash, request.user.login)
    except ShortPathConflict, err:
        del params['short_path'], long_url
        del params['prefix']

        params['hash'] = err.hash

        return pyw4c_response(status=HTTP_CONFLICT, message=str(err), **params)