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

Unified Diff: tools/telemetry/third_party/gsutilz/third_party/protorpc/demos/appstats/protorpc_appstats/main.py

Issue 1264873003: Add gsutil/third_party to telemetry/third_party/gsutilz/third_party. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove httplib2 Created 5 years, 5 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: tools/telemetry/third_party/gsutilz/third_party/protorpc/demos/appstats/protorpc_appstats/main.py
diff --git a/tools/telemetry/third_party/gsutilz/third_party/protorpc/demos/appstats/protorpc_appstats/main.py b/tools/telemetry/third_party/gsutilz/third_party/protorpc/demos/appstats/protorpc_appstats/main.py
new file mode 100755
index 0000000000000000000000000000000000000000..8e9ea1f1131db77d6f3a64759c73334864c658e3
--- /dev/null
+++ b/tools/telemetry/third_party/gsutilz/third_party/protorpc/demos/appstats/protorpc_appstats/main.py
@@ -0,0 +1,90 @@
+#!/usr/bin/env python
+#
+# Copyright 2010 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+import os
+import re
+
+from google.appengine.ext import webapp
+from google.appengine.ext.webapp import util
+
+from protorpc.webapp import service_handlers
+
+import protorpc_appstats
+
+# This regular expression is used to extract the full path of
+# an incoming request so that the service can be correctly
+# registered with its internal registry. The only assumption
+# that is made about the placement of the appstats service by
+# this main module is that the last element of the service path
+# is 'service'.
+_METHOD_REGEX = r'\.[^/]+'
+_SERVICE_PATH_REGEX = re.compile(r'(.*)/service(%s|/protorpc(%s)?)?' %
+ (_METHOD_REGEX, _METHOD_REGEX))
+
+
+def parse_service_path(path_info):
+ """Parse the service path from PATH_INFO in the environment.
+
+ The appstats service may be placed at any URL path within a webapp
+ application. It isn't possible to know what the actual path is
+ until the actual request time. This function attempts to parse
+ the incoming request to determine where the appstats service is
+ configured. If it can successfully determine its location, it
+ will attempt to map protorpc RegistryService underneath its service
+ path.
+
+ The appstats service is always expected to be <path>/service. The
+ RegistryService is mapped to <path>/service/protorpc.
+
+ Args:
+ path_info: PATH_INFO extracted from the CGI environment.
+
+ Returns:
+ A pair paths (appstats_service_path, registry_service_path):
+ appstats_service_path: The full path of the appstats service. If the
+ full path cannot be determined this will be '.*/service'.
+ registry_service_path: The full path of the appstats registry service.
+ If the path of the appstats service cannot be determined this will be
+ None.
+ """
+ match = _SERVICE_PATH_REGEX.match(path_info)
+ if match:
+ appstats_service_path = '%s/service' % (match.group(1),)
+ # Creates a "local" registry service.
+ registry_service_path = '%s/protorpc' % (appstats_service_path,)
+ else:
+ # Not possible to determine full service name for registry. Do
+ # not create registry for service.
+ appstats_service_path = '.*/service'
+ registry_service_path = None
+ return appstats_service_path, registry_service_path
+
+
+def main():
+ path_info = os.environ.get('PATH_INFO', '')
+ service_path, registry_path = parse_service_path(path_info)
+
+ # Create webapp URL mappings for service and private registry.
+ mapping = service_handlers.service_mapping(
+ [(service_path, protorpc_appstats.AppStatsService)], registry_path)
+
+ application = webapp.WSGIApplication(mapping)
+ util.run_wsgi_app(application)
+
+
+if __name__ == '__main__':
+ main()

Powered by Google App Engine
This is Rietveld 408576698