Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@sugarlabs.org>2012-10-02 05:55:16 (GMT)
committer Aleksey Lim <alsroot@sugarlabs.org>2012-10-02 05:55:16 (GMT)
commite1a3dc1b128f09ff04e2e64b91242338635f70eb (patch)
tree3249bd13f712d21a264329120184b54a146a954c
parent524d07e641b0f2ab7a48885db99d015598bf144e (diff)
Customize url for static files served from API
-rw-r--r--sugar_network/node/__init__.py4
-rw-r--r--sugar_network/resources/volume.py6
-rw-r--r--tests/__init__.py1
-rwxr-xr-xtests/units/node.py10
4 files changed, 19 insertions, 2 deletions
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)