Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(334)

Unified Diff: native_client_sdk/src/build_tools/sdk_tools/config.py

Issue 11228013: [NaCl SDK] Refactor sdk_update*. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix windows again Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: native_client_sdk/src/build_tools/sdk_tools/config.py
diff --git a/native_client_sdk/src/build_tools/sdk_tools/config.py b/native_client_sdk/src/build_tools/sdk_tools/config.py
new file mode 100644
index 0000000000000000000000000000000000000000..a2e69d705c89e9497c775d26540e698c36b4c2e7
--- /dev/null
+++ b/native_client_sdk/src/build_tools/sdk_tools/config.py
@@ -0,0 +1,62 @@
+# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import json
+import logging
+import urlparse
+
+SOURCE_WHITELIST = [
+ 'https://commondatastorage.googleapis.com/nativeclient-mirror/nacl/nacl_sdk',
+]
+
+def IsSourceValid(url):
+ scheme, host, path, _, _, _ = urlparse.urlparse(url)
+ for allowed_url in SOURCE_WHITELIST:
+ allowed_scheme, allowed_host, allowed_path_prefix, _, _, _ = \
+ urlparse.urlparse(allowed_url)
+ if (scheme == allowed_scheme and host == allowed_host and
+ path.startswith(allowed_path_prefix)):
+ return True
+ return False
+
+
+class Config(dict):
+ def __init__(self, data=None):
+ dict.__init__(self)
+ if data:
+ self.update(data)
+ else:
+ self.sources = []
+
+ def ToJson(self):
+ return json.dumps(self, sort_keys=False, indent=2)
+
+ def __getattr__(self, name):
+ return self.__getitem__(name)
+
+ def __setattr__(self, name, value):
+ return self.__setitem__(name, value)
+
+ def AddSource(self, source):
+ if not IsSourceValid(source):
+ logging.warn('Only whitelisted sources are allowed. Ignoring \"%s\".' % (
+ source,))
+ return
+
+ if source in self.sources:
+ logging.info('Source \"%s\" already in Config.' % (source,))
+ return
+ self.sources.append(source)
+
+ def RemoveSource(self, source):
+ if source not in self.sources:
+ logging.warn('Source \"%s\" not in Config.' % (source,))
+ return
+ self.sources.remove(source)
+
+ def RemoveAllSources(self):
+ if not self.sources:
+ logging.info('No sources to remove.')
+ return
+ self.sources = []

Powered by Google App Engine
This is Rietveld 408576698