[buildinfo.debian.net] 01/01: Add initial "by-hash" API endpoint. (Closes: #26)

Chris Lamb chris at chris-lamb.co.uk
Wed Nov 1 15:48:08 UTC 2017


This is an automated email from the git hooks/post-receive script.

lamby pushed a commit to branch master
in repository buildinfo.debian.net.

commit 5d69f3807e094f68e3b31e58e794aeadebee0972
Author: Chris Lamb <lamby at debian.org>
Date:   Wed Nov 1 16:47:54 2017 +0100

    Add initial "by-hash" API endpoint. (Closes: #26)
    
    eg. https://buildinfo.debian.net/api/v1/buildinfos/checksums/sha1/<sha>
---
 bidb/buildinfo/models.py |  4 ++++
 bidb/buildinfo/urls.py   |  3 +++
 bidb/buildinfo/views.py  | 25 ++++++++++++++++++++++++-
 3 files changed, 31 insertions(+), 1 deletion(-)

diff --git a/bidb/buildinfo/models.py b/bidb/buildinfo/models.py
index c0963b9..b6a29b8 100644
--- a/bidb/buildinfo/models.py
+++ b/bidb/buildinfo/models.py
@@ -44,6 +44,10 @@ class Buildinfo(models.Model):
     def get_absolute_url(self):
         return 'buildinfo:view', (self.sha1, self.get_filename())
 
+    @models.permalink
+    def get_absolute_raw_url(self):
+        return 'buildinfo:raw-text', (self.sha1, self.get_filename())
+
     def get_filename(self):
         return '{}_{}_{}'.format(
             self.source.name,
diff --git a/bidb/buildinfo/urls.py b/bidb/buildinfo/urls.py
index 032e9e9..c24c891 100644
--- a/bidb/buildinfo/urls.py
+++ b/bidb/buildinfo/urls.py
@@ -13,4 +13,7 @@ urlpatterns = (
         name='raw-text'),
     url(r'^(?P<sha1>\w{40})/(?P<filename>.+)$', views.view,
         name='view'),
+
+    url(r'^api/v1/buildinfos/checksums/sha1/(?P<sha1>\w{40})$', views.checksums,
+        name='checksums'),
 )
diff --git a/bidb/buildinfo/views.py b/bidb/buildinfo/views.py
index 102afc5..92ffb6b 100644
--- a/bidb/buildinfo/views.py
+++ b/bidb/buildinfo/views.py
@@ -1,4 +1,5 @@
-from django.http import HttpResponse
+from django.conf import settings
+from django.http import HttpResponse, JsonResponse
 from django.shortcuts import render, get_object_or_404, redirect
 from django.core.files.storage import default_storage
 
@@ -20,3 +21,25 @@ def raw_text(request, sha1, filename=None):
 
     with default_storage.open(buildinfo.get_storage_name()) as f:
         return HttpResponse(f, content_type='text/plain')
+
+def checksums(request, sha1):
+    buildinfo = Buildinfo.objects.filter(
+        checksums__checksum_sha1=sha1,
+    ).select_related(
+        'source',
+        'architecture',
+    ).order_by()
+
+    return JsonResponse({'buildinfos': [{
+        'uri': '{}{}'.format(
+            settings.SITE_URL,
+            x.get_absolute_url(),
+        ),
+        'raw-uri': '{}{}'.format(
+            settings.SITE_URL,
+            x.get_absolute_raw_url(),
+        ),
+        'source': x.source.name,
+        'version': x.version,
+        'architecture': x.architecture.name,
+    } for x in buildinfo]})

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reproducible/buildinfo.debian.net.git



More information about the Reproducible-commits mailing list