From acded5f9ad9ab4c1c70a1f3f1245463cc34808f2 Mon Sep 17 00:00:00 2001 From: Richard Ipsum Date: Thu, 3 Apr 2014 14:41:31 +0100 Subject: Add post request for /artifacts With this we can request the state of a set of artifacts in a single request. Artifacts are sent as a json array. We check whether each artifact is in the cache or not and send our findings back to the client as a json object. --- morph-cache-server | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/morph-cache-server b/morph-cache-server index dbf6785..2528da5 100755 --- a/morph-cache-server +++ b/morph-cache-server @@ -1,6 +1,6 @@ #!/usr/bin/env python # -# Copyright (C) 2013 Codethink Limited +# Copyright (C) 2013, 2014 Codethink Limited # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -303,7 +303,27 @@ class MorphCacheServer(cliapp.Application): else: response.status = 404 logging.debug('artifact %s does not exist' % basename) - + + @app.post('/artifacts') + def post_artifacts(): + if request.content_type != 'application/json': + logging.warning('Content-type is not json: ' + 'expecting a json post request') + + artifacts = json.load(request.body) + results = {} + + logging.debug('Received a POST request for /artifacts') + + for artifact in artifacts: + filename = os.path.join(self.settings['artifact-dir'], artifact) + results[artifact] = os.path.exists(filename) + + logging.debug('%s is%s in the cache' % + (artifact, '' if results[artifact] else "n't")) + + return results + root = Bottle() root.mount(app, '/1.0') -- cgit v1.2.1