chiark / gitweb /
api query: Provide ability to tolerate 404
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 19 Oct 2016 21:57:09 +0000 (22:57 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 30 Oct 2016 16:35:58 +0000 (16:35 +0000)
This is useful for backward-compatibility with earlier ftpmaster api
versions.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
dgit

diff --git a/dgit b/dgit
index 6d9bacae4b32e9b1b01d55fe4a852f1311dd36d4..97cd684b73665989f9b022ae86f21dac8d2a7e5d 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -1009,9 +1009,9 @@ sub archive_api_query_cmd ($) {
     return @cmd;
 }
 
     return @cmd;
 }
 
-sub api_query ($$) {
+sub api_query ($$;$) {
     use JSON;
     use JSON;
-    my ($data, $subpath) = @_;
+    my ($data, $subpath, $ok404) = @_;
     badcfg "ftpmasterapi archive query method takes no data part"
        if length $data;
     my @cmd = archive_api_query_cmd($subpath);
     badcfg "ftpmasterapi archive query method takes no data part"
        if length $data;
     my @cmd = archive_api_query_cmd($subpath);
@@ -1023,6 +1023,7 @@ sub api_query ($$) {
        fail "curl failed to print 3-digit HTTP code";
     }
     my $code = $&;
        fail "curl failed to print 3-digit HTTP code";
     }
     my $code = $&;
+    return undef if $code eq '404' && $ok404;
     fail "fetch of $url gave HTTP code $code"
        unless $url =~ m#^file://# or $code =~ m/^2/;
     return decode_json($json);
     fail "fetch of $url gave HTTP code $code"
        unless $url =~ m#^file://# or $code =~ m/^2/;
     return decode_json($json);