def get_resource_content(request, source_name): """ Returns the actual resource. Tries to guess the mimetype. If it fails, returns application/octet-stream as fallback. """ import mimetypes mimetypes.init() resource_id = request.GET.get('resource_id', None) if not resource_id: raise Http404 try: source = Source.objects.get(name=source_name) except Source.DoesNotExist: response_data = {'error': 'Source not found'} else: response_data = Backend(source.backend_id).get_resource_content(source, resource_id) if 'content' in response_data.keys(): content = response_data['content'] mimetype, encoding = mimetypes.guess_type(response_data['name']) if not mimetype: mimetype = 'application/octet-stream' else: content = response_data mimetype = "application/json" return HttpResponse(content, mimetype=mimetype)