summaryrefslogtreecommitdiffstats
path: root/python/mozbuild/mozbuild/vendor/host_googlesource.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/mozbuild/mozbuild/vendor/host_googlesource.py')
-rw-r--r--python/mozbuild/mozbuild/vendor/host_googlesource.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/python/mozbuild/mozbuild/vendor/host_googlesource.py b/python/mozbuild/mozbuild/vendor/host_googlesource.py
new file mode 100644
index 0000000000..c903bd99b5
--- /dev/null
+++ b/python/mozbuild/mozbuild/vendor/host_googlesource.py
@@ -0,0 +1,32 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, # You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import requests
+
+from mozbuild.vendor.host_base import BaseHost
+
+
+class GoogleSourceHost(BaseHost):
+ def upstream_commit(self, revision):
+ """Query for a git commit and timestamp."""
+ url = "/".join(
+ [self.manifest["vendoring"]["url"], "+", revision + "?format=JSON"]
+ )
+ req = requests.get(url)
+ req.raise_for_status()
+ try:
+ info = req.json()
+ except ValueError:
+ # As of 2017 May, googlesource sends 4 garbage characters
+ # at the beginning of the json response. Work around this.
+ # https://bugs.chromium.org/p/chromium/issues/detail?id=718550
+ import json
+
+ info = json.loads(req.text[4:])
+ return (info["commit"], info["committer"]["time"])
+
+ def upstream_snapshot(self, revision):
+ return "/".join(
+ [self.manifest["vendoring"]["url"], "+archive", revision + ".tar.gz"]
+ )