Skip to content

Commit

Permalink
Switched from endpoint parameter to a custom thumbor_server.
Browse files Browse the repository at this point in the history
  • Loading branch information
ricobl committed Dec 3, 2013
1 parent 49bd5ad commit 81884cd
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 18 deletions.
9 changes: 6 additions & 3 deletions README.rst
Expand Up @@ -42,21 +42,24 @@ On code:
from django_thumbor import generate_url
resized = generate_url("/media/image.jpg", width=300)
There is an extra parameter to specify an endpoint to be appended to your ``settings.THUMBOR_SERVER``.
There is an extra parameter to specify a custom server to be used instead of
``settings.THUMBOR_SERVER``.

On templates:

.. code-block:: html

{% load thumbor_tags %}
<img src="{% thumbor_url '/media/image.jpg' '/foo' width=300 %}" width="300" />
<img src="{% thumbor_url '/media/image.jpg' thumbor_server='http://localhost:8888/foo' width=300 %}" width="300" />

On code:

.. code-block:: python
from django_thumbor import generate_url
resized = generate_url("/media/image.jpg", endpoint='/foo', width=300)
custom_server = "http://localhost:8888/foo"
resized = generate_url(
"/media/image.jpg", thumbor_server=custom_server, width=300)
Installation
Expand Down
7 changes: 5 additions & 2 deletions django_thumbor/__init__.py
Expand Up @@ -26,11 +26,14 @@ def _prepend_media_url(url):
return url


def generate_url(image_url, endpoint='', **kwargs):
def generate_url(image_url, **kwargs):
image_url = _prepend_media_url(image_url)
image_url = _remove_schema(image_url)

kwargs = dict(conf.THUMBOR_ARGUMENTS, **kwargs)
thumbor_server = kwargs.pop(
'thumbor_server', conf.THUMBOR_SERVER).rstrip('/')

encrypted_url = crypto.generate(image_url=image_url, **kwargs).strip('/')

return '%s%s/%s' % (conf.THUMBOR_SERVER, endpoint, encrypted_url)
return '%s/%s' % (thumbor_server, encrypted_url)
4 changes: 2 additions & 2 deletions django_thumbor/templatetags/thumbor_tags.py
Expand Up @@ -7,5 +7,5 @@


@register.simple_tag
def thumbor_url(image_url, endpoint='', **kwargs):
return generate_url(image_url=image_url, endpoint=endpoint, **kwargs)
def thumbor_url(image_url, **kwargs):
return generate_url(image_url=image_url, **kwargs)
25 changes: 19 additions & 6 deletions testproject/tests/test_generate_url.py
Expand Up @@ -41,14 +41,27 @@ def test_should_return_the_result(self):

self.assertEqual(url, encrypted_url_with_host)

def test_should_return_the_result_whith_endpoint(self):
def test_should_return_the_result_with_a_custom_server(self):
encrypted_url = 'encrypted-url.jpg'
encrypted_url_with_host = 'http://localhost:8888/foo/encrypted-url.jpg'
endpoint = '/foo'
custom_server = 'http://localhost:8888/foo'
encrypted_url_with_host = '{0}/{1}'.format(
custom_server, encrypted_url)

with patch('django_thumbor.crypto.generate') as mock:
mock.return_value = encrypted_url
url = generate_url(self.url, endpoint=endpoint)
url = generate_url(self.url, thumbor_server=custom_server)

self.assertEqual(url, encrypted_url_with_host)

def test_should_remove_ending_slash_from_custom_server(self):
encrypted_url = 'encrypted-url.jpg'
custom_server = 'http://localhost:8888/foo/'
encrypted_url_with_host = '{0}{1}'.format(
custom_server, encrypted_url)

with patch('django_thumbor.crypto.generate') as mock:
mock.return_value = encrypted_url
url = generate_url(self.url, thumbor_server=custom_server)

self.assertEqual(url, encrypted_url_with_host)

Expand All @@ -70,9 +83,9 @@ def test_should_allow_overriding_args_from_settings(self):

class TestURLFixing(TestCase):

def assertURLEquals(self, original, expected):
def assertURLEquals(self, original, expected, **kwargs):
with patch('django_thumbor.crypto.generate') as mock:
generate_url(original)
generate_url(original, **kwargs)
mock.assert_called_with(image_url=expected)

def test_should_prepend_the_domain_to_media_url_images(self):
Expand Down
12 changes: 7 additions & 5 deletions testproject/tests/test_thumbor_url_ttag.py
Expand Up @@ -18,14 +18,16 @@ def render(self, arguments):
def test_should_pass_the_image_url_arg_to_the_helper(self):
with patch(self.generate_url_path) as mock:
self.render('url')
mock.assert_called_with(image_url=self.url, endpoint='')
mock.assert_called_with(image_url=self.url)

def test_should_pass_the_endpoint_arg_to_the_helper(self):
def test_should_pass_the_custom_server_arg_to_the_helper(self):
custom_server = "http://localhost:8888/foo"
with patch(self.generate_url_path) as mock:
self.render('url endpoint="/foo"')
mock.assert_called_with(image_url=self.url, endpoint='/foo')
self.render('url thumbor_server="{0}"'.format(custom_server))
mock.assert_called_with(
image_url=self.url, thumbor_server=custom_server)

def test_should_pass_kwargs_to_the_helper(self):
with patch(self.generate_url_path) as mock:
self.render('url width=300 height=200')
mock.assert_called_with(image_url=self.url, endpoint='', width=300, height=200)
mock.assert_called_with(image_url=self.url, width=300, height=200)

0 comments on commit 81884cd

Please sign in to comment.