diff --git a/CHANGELOG b/CHANGELOG index 5877564..ed965bd 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -12,6 +12,9 @@ future releases, check `milestones`_ and :doc:`/about/vision`. - Feature #113 - Introduced support of Python 3.5. +- Feature #116 - ``HTTPFile`` has ``content_type`` property. It makes + ``HTTPDownloadView`` proxy ``Content-Type`` header from remote location. + 1.8 (2015-07-20) ---------------- diff --git a/demo/demoproject/http/tests.py b/demo/demoproject/http/tests.py index 48186c5..4296790 100644 --- a/demo/demoproject/http/tests.py +++ b/demo/demoproject/http/tests.py @@ -14,3 +14,13 @@ class SimpleURLTestCase(django.test.TestCase): content='Hello world!\n', basename='hello-world.txt', mime_type='text/plain') + + +class AvatarTestCase(django.test.TestCase): + def test_download_response(self): + """HTTPDownloadView proxies Content-Type header.""" + url = reverse('http:avatar_url') + response = self.client.get(url) + assert_download_response(self, + response, + mime_type='image/png') diff --git a/demo/demoproject/http/urls.py b/demo/demoproject/http/urls.py index 11ca73d..ebb70c6 100644 --- a/demo/demoproject/http/urls.py +++ b/demo/demoproject/http/urls.py @@ -8,4 +8,7 @@ urlpatterns = patterns( url(r'^simple_url/$', views.simple_url, name='simple_url'), + url(r'^avatar_url/$', + views.avatar_url, + name='avatar_url'), ) diff --git a/demo/demoproject/http/views.py b/demo/demoproject/http/views.py index dc1e7b5..8f174f2 100644 --- a/demo/demoproject/http/views.py +++ b/demo/demoproject/http/views.py @@ -10,4 +10,10 @@ class SimpleURLDownloadView(HTTPDownloadView): '/demo/demoproject/download/fixtures/hello-world.txt' +class GithubAvatarDownloadView(HTTPDownloadView): + def get_url(self): + return 'https://avatars0.githubusercontent.com/u/235204' + + simple_url = SimpleURLDownloadView.as_view() +avatar_url = GithubAvatarDownloadView.as_view() diff --git a/django_downloadview/files.py b/django_downloadview/files.py index a83f31b..c6b4e0d 100644 --- a/django_downloadview/files.py +++ b/django_downloadview/files.py @@ -256,3 +256,8 @@ class HTTPFile(File): """ return self.request.headers['Content-Length'] + + @property + def content_type(self): + """Return content type of the file (from original response).""" + return self.request.headers['Content-Type']