From e1a3dc1b128f09ff04e2e64b91242338635f70eb Mon Sep 17 00:00:00 2001 From: Aleksey Lim Date: Tue, 02 Oct 2012 05:55:16 +0000 Subject: Customize url for static files served from API --- diff --git a/sugar_network/node/__init__.py b/sugar_network/node/__init__.py index e73e2d3..f88e510 100644 --- a/sugar_network/node/__init__.py +++ b/sugar_network/node/__init__.py @@ -61,3 +61,7 @@ pull_timeout = Option( 'delay in seconds to return to sync-pull requester to wait until ' 'pull request will be ready', default=30, type_cast=int) + +static_url = Option( + 'url prefix to use for static files that should be served via API ' + 'server; if omited, HTTP_HOST request value will be used') diff --git a/sugar_network/resources/volume.py b/sugar_network/resources/volume.py index a5690db..d6867ba 100644 --- a/sugar_network/resources/volume.py +++ b/sugar_network/resources/volume.py @@ -20,7 +20,7 @@ from os.path import join import active_document as ad from active_document import directory as ad_directory -from sugar_network import local +from sugar_network import local, node from sugar_network.toolkit.sneakernet import DiskFull from sugar_network.toolkit.collection import Sequence from sugar_network.toolkit import http @@ -214,7 +214,9 @@ class Commands(object): return result def _mixin_blobs(self, request, result): - if hasattr(request, 'environ'): + if node.static_url.value: + prefix = node.static_url.value + elif hasattr(request, 'environ'): prefix = 'http://' + request.environ['HTTP_HOST'] else: prefix = 'http://localhost:%s' % local.ipc_port.value diff --git a/tests/__init__.py b/tests/__init__.py index 30193fc..a1850af 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -75,6 +75,7 @@ class Test(unittest.TestCase): node.tmpdir.value = tmpdir + '/tmp' node.data_root.value = tmpdir node.sync_dirs.value = [] + node.static_url.value = None ad.index_write_queue.value = 10 local.local_root.value = tmpdir local.activity_dirs.value = [tmpdir + '/Activities'] diff --git a/tests/units/node.py b/tests/units/node.py index 54f632f..9b2b200 100755 --- a/tests/units/node.py +++ b/tests/units/node.py @@ -324,6 +324,16 @@ class NodeTest(tests.Test): ], call(cp, method='GET', document='report', reply=['guid', 'data', 'layer'])['result']) + node.static_url.value = 'static_url' + self.assertEqual( + sorted([ + {'guid': guid1, 'icon': 'static_url/static/images/missing.png', 'layer': ['public']}, + {'guid': guid2, 'icon': 'http://foo/bar', 'layer': ['public']}, + {'guid': guid3, 'icon': 'static_url/foo/bar', 'layer': ['public']}, + {'guid': guid5, 'icon': ['static_url/1', 'http://2'], 'layer': ['public']}, + ]), + sorted(call(cp, method='GET', document='context', reply=['guid', 'icon', 'layer'])['result'])) + def test_DeletedDocuments(self): volume = Volume('db') cp = NodeCommands(volume) -- cgit v0.9.1