Esempio n. 1
0
def shortener(request):
    real_url = request.POST.get('long_url', '')

    long_url = validate_url(real_url)
    if not long_url:
        return render(request, 'url_validation_error.html', {'bad_url': real_url})

    elif Master.objects.filter(long_url=long_url).exists():
        temp_short = Master.objects.get(long_url=long_url)
        return render(request, 'exists.html', {'shorten': temp_short.short_url})

    else:

        record = Master(short_url='', long_url=long_url, creation_time=datetime.now(), clicks=0)
        record.save()

        # Unique Code Generator Function for SHORT_URL
        short_url = encode(record.id)

        Master.objects.filter(id=record.id).update(short_url=short_url)

        return render(request, 'shortener.html', {'long_url': long_url, 'short_url': short_url})
Esempio n. 2
0
 def test_validate_url(self):
     self.assertEqual(validate_url('http://url.com'), 'http://url.com')
     self.assertEqual(validate_url('http://www.url.com'), 'http://www.url.com')
     self.assertEqual(validate_url('http://url.'), None)
     self.assertEqual(validate_url('http://url.url.com'), 'http://url.url.com')
     self.assertEqual(validate_url('http://sub1.sub2.url.com'), 'http://sub1.sub2.url.com')
     self.assertEqual(validate_url('http://url.com/path/to/some/folder'), 'http://url.com/path/to/some/folder')
     self.assertEqual(validate_url('http://url.com/path/to/some/folder/'), 'http://url.com/path/to/some/folder/')
     self.assertEqual(validate_url('http://url.com/?param1'), 'http://url.com/?param1')
     self.assertEqual(validate_url('http://url.com/?param1=1'), 'http://url.com/?param1=1')
     self.assertEqual(validate_url('http://url.com/?param1=something'), 'http://url.com/?param1=something')
     self.assertEqual(validate_url('https://newprotocol.com/'), 'https://newprotocol.com/')
     self.assertEqual(validate_url('ftp://newprotocol.com/'), 'ftp://newprotocol.com/')
     
     # Tests without protocol ...
     self.assertEqual(validate_url('url.com'), 'http://url.com')
     self.assertEqual(validate_url('www.url.com'), 'http://www.url.com')
     self.assertEqual(validate_url('url.'), None)
     self.assertEqual(validate_url('url.url.com'), 'http://url.url.com')
     self.assertEqual(validate_url('sub1.sub2.url.com'), 'http://sub1.sub2.url.com')
     self.assertEqual(validate_url('url.com/path/to/some/folder'), 'http://url.com/path/to/some/folder')
     self.assertEqual(validate_url('url.com/path/to/some/folder/'), 'http://url.com/path/to/some/folder/')
     self.assertEqual(validate_url('url.com/?param1'), 'http://url.com/?param1')
     self.assertEqual(validate_url('url.com/?param1=1'), 'http://url.com/?param1=1')
     self.assertEqual(validate_url('url.com/?param1=something'), 'http://url.com/?param1=something')
     self.assertEqual(validate_url('newprotocol.com/'), 'http://newprotocol.com/')
     self.assertEqual(validate_url('ftp:/newprotocol.com/'), None)