summaryrefslogtreecommitdiff
path: root/morph-cache-server
diff options
context:
space:
mode:
authorJannis Pohlmann <jannis.pohlmann@codethink.co.uk>2012-04-20 15:46:53 +0100
committerJannis Pohlmann <jannis.pohlmann@codethink.co.uk>2012-04-20 15:46:53 +0100
commiteb4c1530c57b6ae200643b259e6ed95904951681 (patch)
tree68406cff27bfbc9bc9380088a8b9edb217a69e69 /morph-cache-server
parentf1fba299bd07510346082ef985ef08a494dca9d9 (diff)
downloadmorph-cache-server-eb4c1530c57b6ae200643b259e6ed95904951681.tar.gz
Add /trees which serves the contents of a git tree using ls-tree.
/trees queries take repo URI, a SHA1 ref and an optional path parameter. The result is a JSON dictionary of the form { "repo": "<repo URI>", "ref": "<SHA1 ref>", "tree": { "filename1": { "mode": "100644", "kind": "blob", "sha1": "FOOBARBAZ" }, ... } }
Diffstat (limited to 'morph-cache-server')
-rwxr-xr-xmorph-cache-server16
1 files changed, 16 insertions, 0 deletions
diff --git a/morph-cache-server b/morph-cache-server
index 7618f5b..86a1fe2 100755
--- a/morph-cache-server
+++ b/morph-cache-server
@@ -85,6 +85,22 @@ class MorphCacheServer(cliapp.Application):
response.status = 404
logging.debug('%s' % e)
+ @app.get('/trees')
+ def tree():
+ repo = self._unescape_parameter(request.query.repo)
+ ref = self._unescape_parameter(request.query.ref)
+ path = self._unescape_parameter(request.query.path)
+ try:
+ tree = repo_cache.ls_tree(repo, ref, path)
+ return {
+ 'repo': '%s' % repo,
+ 'ref': '%s' % ref,
+ 'tree': tree,
+ }
+ except Exception, e:
+ response.status = 404
+ logging.debug('%s' % e)
+
@app.get('/bundles')
def bundle():
repo = self._unescape_parameter(request.query.repo)