X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dakweb%2Fqueries%2Fmadison.py;h=82a3af5b31048ab1b60fab5a43303b902bc9955b;hb=80108bebf0307acfc27d586e6faffe193199b14b;hp=d27d4784864caa1fbf9b2696dfbf1bcbe6d93eba;hpb=707f0c5652b550fefd53e55bc2cbd3d2b8ef088e;p=dak.git diff --git a/dakweb/queries/madison.py b/dakweb/queries/madison.py index d27d4784..82a3af5b 100644 --- a/dakweb/queries/madison.py +++ b/dakweb/queries/madison.py @@ -1,3 +1,11 @@ +""" "Madison" interface + +@contact: Debian FTPMaster +@copyright: 2014 Ansgar Burchardt +@copyright: 2014 Joerg Jaspert +@license: GNU General Public License version 2 or later +""" + import bottle import json @@ -6,11 +14,32 @@ from dakweb.webregister import QueryRegister @bottle.route('/madison') def madison(): + """ + Display information about B{package(s)}. + + @since: December 2014 + + @keyword package: Space seperated list of packages. + @keyword a: only show info for specified architectures. + @keyword b: only show info for a binary type. I{deb/udeb/dsc} + @keyword c: only show info for specified component(s). I{main/contrib/non-free} + @keyword s: only show info for this suite. + @keyword S: show info for the binary children of source pkgs. I{true/false} + @keyword f: output json format. I{json} + @see: L{I{suites}} on how to receive a list of valid suites. + + @rtype: text/plain or application/json + @return: Text or Json format of the data + """ + r = bottle.request packages = r.query.get('package', '').split() kwargs = dict() + architectures = r.query.get('a', None) + if architectures is not None: + kwargs['architectures'] = architectures.split(",") binary_type = r.query.get('b', None) if binary_type is not None: kwargs['binary_types'] = [binary_type] @@ -24,12 +53,19 @@ def madison(): kwargs['source_and_binary'] = True #if 'r' in r.query: # kwargs['regex'] = True + format = r.query.get('f', None) + if format is not None: + kwargs['format'] = 'python' result = list_packages(packages, **kwargs) - bottle.response.content_type = 'text/plain' - for row in result: - yield row - yield "\n" + if format is None: + bottle.response.content_type = 'text/plain' + for row in result: + yield row + yield "\n" + else: + yield json.dumps(list(result)) + QueryRegister().register_path('/madison', madison)